@mittwald/api-client-commons 2.0.2 → 3.0.0-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +32 -0
- package/dist/cjs/core/ApiClientBase.js +16 -0
- package/{dist-cjs → dist/cjs}/core/Request.js +1 -4
- package/dist/cjs/index.d.ts +3 -0
- package/dist/cjs/index.js +19 -0
- package/{dist-cjs → dist/cjs}/types/OpenAPIOperation.d.ts +3 -3
- package/{dist-cjs/types/Request.d.ts → dist/cjs/types/RequestType.d.ts} +2 -2
- package/dist/cjs/types/assertStatus.d.ts +5 -0
- package/dist/cjs/types/assertStatus.js +11 -0
- package/dist/{types → cjs/types}/index.d.ts +4 -2
- package/{dist-cjs → dist/cjs}/types/index.js +4 -1
- package/dist/cjs/types/simplify.d.ts +3 -0
- package/dist/esm/index.d.ts +3 -0
- package/dist/esm/index.js +3 -0
- package/dist/{types → esm/types}/OpenAPIOperation.d.ts +3 -3
- package/dist/{types/Request.d.ts → esm/types/RequestType.d.ts} +2 -2
- package/dist/esm/types/assertStatus.d.ts +5 -0
- package/dist/esm/types/assertStatus.js +7 -0
- package/{dist-cjs → dist/esm}/types/index.d.ts +4 -2
- package/dist/{types → esm/types}/index.js +4 -1
- package/dist/esm/types/simplify.d.ts +3 -0
- package/package.json +14 -15
- package/dist/index.js +0 -1
- package/dist/types/Request.js +0 -1
- package/dist-cjs/core/ApiClientBase.js +0 -42
- /package/{dist-cjs → dist/cjs}/axios.d.ts +0 -0
- /package/{dist-cjs → dist/cjs}/axios.js +0 -0
- /package/{dist-cjs → dist/cjs}/core/ApiClientBase.d.ts +0 -0
- /package/{dist-cjs → dist/cjs}/core/ApiClientError.d.ts +0 -0
- /package/{dist-cjs → dist/cjs}/core/ApiClientError.js +0 -0
- /package/{dist-cjs → dist/cjs}/core/OpenAPIPath.d.ts +0 -0
- /package/{dist-cjs → dist/cjs}/core/OpenAPIPath.js +0 -0
- /package/{dist-cjs → dist/cjs}/core/Request.d.ts +0 -0
- /package/{dist-cjs → dist/cjs}/core/index.d.ts +0 -0
- /package/{dist-cjs → dist/cjs}/core/index.js +0 -0
- /package/{dist-cjs → dist/cjs}/types/NullableOnNoRequiredKeysDeep.d.ts +0 -0
- /package/{dist-cjs → dist/cjs}/types/NullableOnNoRequiredKeysDeep.js +0 -0
- /package/{dist-cjs → dist/cjs}/types/OpenAPIOperation.js +0 -0
- /package/{dist-cjs → dist/cjs}/types/RequestFunction.d.ts +0 -0
- /package/{dist-cjs → dist/cjs}/types/RequestFunction.js +0 -0
- /package/{dist-cjs/index.js → dist/cjs/types/RequestType.js} +0 -0
- /package/{dist-cjs → dist/cjs}/types/Response.d.ts +0 -0
- /package/{dist-cjs → dist/cjs}/types/Response.js +0 -0
- /package/{dist-cjs → dist/cjs}/types/http.d.ts +0 -0
- /package/{dist-cjs → dist/cjs}/types/http.js +0 -0
- /package/{dist-cjs/types/Request.js → dist/cjs/types/simplify.js} +0 -0
- /package/dist/{axios.d.ts → esm/axios.d.ts} +0 -0
- /package/dist/{axios.js → esm/axios.js} +0 -0
- /package/dist/{core → esm/core}/ApiClientBase.d.ts +0 -0
- /package/dist/{core → esm/core}/ApiClientBase.js +0 -0
- /package/dist/{core → esm/core}/ApiClientError.d.ts +0 -0
- /package/dist/{core → esm/core}/ApiClientError.js +0 -0
- /package/dist/{core → esm/core}/OpenAPIPath.d.ts +0 -0
- /package/dist/{core → esm/core}/OpenAPIPath.js +0 -0
- /package/dist/{core → esm/core}/Request.d.ts +0 -0
- /package/dist/{core → esm/core}/Request.js +0 -0
- /package/dist/{core → esm/core}/index.d.ts +0 -0
- /package/dist/{core → esm/core}/index.js +0 -0
- /package/dist/{types → esm/types}/NullableOnNoRequiredKeysDeep.d.ts +0 -0
- /package/dist/{types → esm/types}/NullableOnNoRequiredKeysDeep.js +0 -0
- /package/dist/{types → esm/types}/OpenAPIOperation.js +0 -0
- /package/dist/{types → esm/types}/RequestFunction.d.ts +0 -0
- /package/dist/{types → esm/types}/RequestFunction.js +0 -0
- /package/{dist-cjs/index.d.ts → dist/esm/types/RequestType.js} +0 -0
- /package/dist/{types → esm/types}/Response.d.ts +0 -0
- /package/dist/{types → esm/types}/Response.js +0 -0
- /package/dist/{types → esm/types}/http.d.ts +0 -0
- /package/dist/{types → esm/types}/http.js +0 -0
- /package/dist/{index.d.ts → esm/types/simplify.js} +0 -0
package/README.md
CHANGED
|
@@ -1 +1,33 @@
|
|
|
1
1
|
Common code base used by `@mittwald/api-client-*` package.
|
|
2
|
+
|
|
3
|
+
## API
|
|
4
|
+
|
|
5
|
+
### assertStatus
|
|
6
|
+
|
|
7
|
+
The API client does not validate any response status by design, to give you the
|
|
8
|
+
most flexibility while handling also erroneous responses. If you want to assert
|
|
9
|
+
some desired response status, you can use the `assertStatus` function.
|
|
10
|
+
|
|
11
|
+
#### assertStatus(response, expectedStatus)
|
|
12
|
+
|
|
13
|
+
Returns: void
|
|
14
|
+
|
|
15
|
+
This method throws an `ApiClientError` if the given `response` does not match
|
|
16
|
+
the `expectedStatus`.
|
|
17
|
+
|
|
18
|
+
When you are using TypeScript this function also asserts the correct response
|
|
19
|
+
type.
|
|
20
|
+
|
|
21
|
+
```ts
|
|
22
|
+
const response = await client.project.getProject({
|
|
23
|
+
pathParameters: {
|
|
24
|
+
projectId: "...",
|
|
25
|
+
},
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
assertStatus(response, 200);
|
|
29
|
+
|
|
30
|
+
const project = response.data;
|
|
31
|
+
// Project properties can now be accessed safely
|
|
32
|
+
const name = project.name;
|
|
33
|
+
```
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ApiClientBase = void 0;
|
|
4
|
+
const axios_1 = require("axios");
|
|
5
|
+
const Request_js_1 = require("./Request.js");
|
|
6
|
+
class ApiClientBase {
|
|
7
|
+
constructor(axiosConfig = axios_1.default) {
|
|
8
|
+
this.axios =
|
|
9
|
+
axiosConfig instanceof axios_1.Axios ? axiosConfig : axios_1.default.create(axiosConfig);
|
|
10
|
+
}
|
|
11
|
+
requestFunctionFactory(operation) {
|
|
12
|
+
return (conf) => new Request_js_1.default(this.axios, operation, conf).execute();
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
exports.ApiClientBase = ApiClientBase;
|
|
16
|
+
exports.default = ApiClientBase;
|
|
@@ -1,10 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
3
|
exports.Request = void 0;
|
|
7
|
-
const OpenAPIPath_js_1 =
|
|
4
|
+
const OpenAPIPath_js_1 = require("./OpenAPIPath.js");
|
|
8
5
|
class Request {
|
|
9
6
|
constructor(axiosInstance, operationDescriptor, config) {
|
|
10
7
|
this.axios = axiosInstance;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./core/index.js"), exports);
|
|
18
|
+
__exportStar(require("./types/index.js"), exports);
|
|
19
|
+
__exportStar(require("./axios.js"), exports);
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { AnyResponse, Response } from "./Response.js";
|
|
2
|
-
import { AnyRequest,
|
|
2
|
+
import { AnyRequest, RequestType } from "./RequestType.js";
|
|
3
3
|
import { HttpMethod } from "./http.js";
|
|
4
|
-
export interface OpenAPIOperation<TIgnoredRequest extends AnyRequest =
|
|
4
|
+
export interface OpenAPIOperation<TIgnoredRequest extends AnyRequest = RequestType, IgnoredResponse extends AnyResponse = Response> {
|
|
5
5
|
operationId: string;
|
|
6
6
|
path: string;
|
|
7
7
|
method: HttpMethod;
|
|
8
8
|
}
|
|
9
9
|
export type InferredRequestType<TOp> = TOp extends OpenAPIOperation<infer TReq> ? TReq : never;
|
|
10
|
-
export type InferredResponseType<TOp> = TOp extends OpenAPIOperation<
|
|
10
|
+
export type InferredResponseType<TOp> = TOp extends OpenAPIOperation<RequestType, infer TRes> ? TRes : never;
|
|
@@ -9,6 +9,6 @@ type RequestWithHeaders<THeaders> = THeaders extends null ? object : {
|
|
|
9
9
|
headers: THeaders;
|
|
10
10
|
};
|
|
11
11
|
type EmptyRequest = Record<string, never>;
|
|
12
|
-
export type
|
|
13
|
-
export type AnyRequest =
|
|
12
|
+
export type RequestType<TData extends HttpPayload = null, TPathParameters extends PathParameters | null = null, THeader extends HttpHeaders | null = null> = TData | TPathParameters | THeader extends null ? EmptyRequest : RequestWithData<TData> & RequestWithPathParameters<TPathParameters> & RequestWithHeaders<THeader>;
|
|
13
|
+
export type AnyRequest = RequestType<any, any, any>;
|
|
14
14
|
export {};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.assertStatus = void 0;
|
|
4
|
+
const ApiClientError_js_1 = require("../core/ApiClientError.js");
|
|
5
|
+
function assertStatus(response, expectedStatus) {
|
|
6
|
+
if (response.status !== expectedStatus) {
|
|
7
|
+
throw ApiClientError_js_1.default.fromResponse(`Unexpected response status (expected ${expectedStatus}, got: ${response.status})`, response);
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
exports.assertStatus = assertStatus;
|
|
11
|
+
exports.default = assertStatus;
|
|
@@ -1,6 +1,8 @@
|
|
|
1
|
-
export * from "./
|
|
1
|
+
export * from "./RequestType.js";
|
|
2
2
|
export * from "./RequestFunction.js";
|
|
3
3
|
export * from "./Response.js";
|
|
4
4
|
export * from "./OpenAPIOperation.js";
|
|
5
5
|
export * from "./http.js";
|
|
6
|
-
export
|
|
6
|
+
export * from "./assertStatus.js";
|
|
7
|
+
export * from "./simplify.js";
|
|
8
|
+
export * from "./assertStatus.js";
|
|
@@ -14,8 +14,11 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./
|
|
17
|
+
__exportStar(require("./RequestType.js"), exports);
|
|
18
18
|
__exportStar(require("./RequestFunction.js"), exports);
|
|
19
19
|
__exportStar(require("./Response.js"), exports);
|
|
20
20
|
__exportStar(require("./OpenAPIOperation.js"), exports);
|
|
21
21
|
__exportStar(require("./http.js"), exports);
|
|
22
|
+
__exportStar(require("./assertStatus.js"), exports);
|
|
23
|
+
__exportStar(require("./simplify.js"), exports);
|
|
24
|
+
__exportStar(require("./assertStatus.js"), exports);
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { AnyResponse, Response } from "./Response.js";
|
|
2
|
-
import { AnyRequest,
|
|
2
|
+
import { AnyRequest, RequestType } from "./RequestType.js";
|
|
3
3
|
import { HttpMethod } from "./http.js";
|
|
4
|
-
export interface OpenAPIOperation<TIgnoredRequest extends AnyRequest =
|
|
4
|
+
export interface OpenAPIOperation<TIgnoredRequest extends AnyRequest = RequestType, IgnoredResponse extends AnyResponse = Response> {
|
|
5
5
|
operationId: string;
|
|
6
6
|
path: string;
|
|
7
7
|
method: HttpMethod;
|
|
8
8
|
}
|
|
9
9
|
export type InferredRequestType<TOp> = TOp extends OpenAPIOperation<infer TReq> ? TReq : never;
|
|
10
|
-
export type InferredResponseType<TOp> = TOp extends OpenAPIOperation<
|
|
10
|
+
export type InferredResponseType<TOp> = TOp extends OpenAPIOperation<RequestType, infer TRes> ? TRes : never;
|
|
@@ -9,6 +9,6 @@ type RequestWithHeaders<THeaders> = THeaders extends null ? object : {
|
|
|
9
9
|
headers: THeaders;
|
|
10
10
|
};
|
|
11
11
|
type EmptyRequest = Record<string, never>;
|
|
12
|
-
export type
|
|
13
|
-
export type AnyRequest =
|
|
12
|
+
export type RequestType<TData extends HttpPayload = null, TPathParameters extends PathParameters | null = null, THeader extends HttpHeaders | null = null> = TData | TPathParameters | THeader extends null ? EmptyRequest : RequestWithData<TData> & RequestWithPathParameters<TPathParameters> & RequestWithHeaders<THeader>;
|
|
13
|
+
export type AnyRequest = RequestType<any, any, any>;
|
|
14
14
|
export {};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import ApiClientError from "../core/ApiClientError.js";
|
|
2
|
+
export function assertStatus(response, expectedStatus) {
|
|
3
|
+
if (response.status !== expectedStatus) {
|
|
4
|
+
throw ApiClientError.fromResponse(`Unexpected response status (expected ${expectedStatus}, got: ${response.status})`, response);
|
|
5
|
+
}
|
|
6
|
+
}
|
|
7
|
+
export default assertStatus;
|
|
@@ -1,6 +1,8 @@
|
|
|
1
|
-
export * from "./
|
|
1
|
+
export * from "./RequestType.js";
|
|
2
2
|
export * from "./RequestFunction.js";
|
|
3
3
|
export * from "./Response.js";
|
|
4
4
|
export * from "./OpenAPIOperation.js";
|
|
5
5
|
export * from "./http.js";
|
|
6
|
-
export
|
|
6
|
+
export * from "./assertStatus.js";
|
|
7
|
+
export * from "./simplify.js";
|
|
8
|
+
export * from "./assertStatus.js";
|
|
@@ -1,5 +1,8 @@
|
|
|
1
|
-
export * from "./
|
|
1
|
+
export * from "./RequestType.js";
|
|
2
2
|
export * from "./RequestFunction.js";
|
|
3
3
|
export * from "./Response.js";
|
|
4
4
|
export * from "./OpenAPIOperation.js";
|
|
5
5
|
export * from "./http.js";
|
|
6
|
+
export * from "./assertStatus.js";
|
|
7
|
+
export * from "./simplify.js";
|
|
8
|
+
export * from "./assertStatus.js";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mittwald/api-client-commons",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "3.0.0-alpha.1",
|
|
4
4
|
"description": "Common types and utilities for mittwald API clients",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": "https://github.com/mittwald/api-client-js.git",
|
|
@@ -10,19 +10,18 @@
|
|
|
10
10
|
},
|
|
11
11
|
"homepage": "https://developer.mittwald.de",
|
|
12
12
|
"bugs": "https://github.com/mittwald/api-client-js/issues",
|
|
13
|
+
"main": "dist/cjs/index.js",
|
|
13
14
|
"type": "module",
|
|
14
15
|
"exports": {
|
|
15
16
|
".": {
|
|
16
|
-
"
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
"
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
"import": "./dist/types/index.js",
|
|
25
|
-
"default": "./dist-cjs/types/index.js"
|
|
17
|
+
"types": {
|
|
18
|
+
"require": "./dist/cjs/index.d.ts",
|
|
19
|
+
"default": "./dist/esm/index.d.ts"
|
|
20
|
+
},
|
|
21
|
+
"default": {
|
|
22
|
+
"require": "./dist/cjs/index.js",
|
|
23
|
+
"default": "./dist/esm/index.js"
|
|
24
|
+
}
|
|
26
25
|
}
|
|
27
26
|
},
|
|
28
27
|
"scripts": {
|
|
@@ -30,7 +29,7 @@
|
|
|
30
29
|
"test:tsd": "pnpify run tsd"
|
|
31
30
|
},
|
|
32
31
|
"files": [
|
|
33
|
-
"
|
|
32
|
+
"dist/**/*.{js,d.ts}"
|
|
34
33
|
],
|
|
35
34
|
"keywords": [
|
|
36
35
|
"mittwald",
|
|
@@ -44,11 +43,11 @@
|
|
|
44
43
|
"axios": "^1.4.0",
|
|
45
44
|
"parse-path": "^7.0.0",
|
|
46
45
|
"path-to-regexp": "^6.2.1",
|
|
47
|
-
"type-fest": "^3.
|
|
46
|
+
"type-fest": "^3.12.0"
|
|
48
47
|
},
|
|
49
48
|
"devDependencies": {
|
|
50
|
-
"@yarnpkg/pnpify": "^4.0.0-rc.
|
|
49
|
+
"@yarnpkg/pnpify": "^4.0.0-rc.48",
|
|
51
50
|
"tsd": "^0.28.1"
|
|
52
51
|
},
|
|
53
|
-
"types": "
|
|
52
|
+
"types": "dist/cjs/index.d.ts"
|
|
54
53
|
}
|
package/dist/index.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
package/dist/types/Request.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
-
if (mod && mod.__esModule) return mod;
|
|
20
|
-
var result = {};
|
|
21
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
-
__setModuleDefault(result, mod);
|
|
23
|
-
return result;
|
|
24
|
-
};
|
|
25
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
-
};
|
|
28
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
-
exports.ApiClientBase = void 0;
|
|
30
|
-
const axios_1 = __importStar(require("axios"));
|
|
31
|
-
const Request_js_1 = __importDefault(require("./Request.js"));
|
|
32
|
-
class ApiClientBase {
|
|
33
|
-
constructor(axiosConfig = axios_1.default) {
|
|
34
|
-
this.axios =
|
|
35
|
-
axiosConfig instanceof axios_1.Axios ? axiosConfig : axios_1.default.create(axiosConfig);
|
|
36
|
-
}
|
|
37
|
-
requestFunctionFactory(operation) {
|
|
38
|
-
return (conf) => new Request_js_1.default(this.axios, operation, conf).execute();
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
exports.ApiClientBase = ApiClientBase;
|
|
42
|
-
exports.default = ApiClientBase;
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|