@rxap/workspace-open-api 19.0.14-dev.1 → 19.1.0-dev.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/CHANGELOG.md CHANGED
@@ -3,6 +3,16 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # [19.1.0-dev.1](https://gitlab.com/rxap/packages/compare/@rxap/workspace-open-api@19.1.0-dev.0...@rxap/workspace-open-api@19.1.0-dev.1) (2025-03-26)
7
+
8
+ **Note:** Version bump only for package @rxap/workspace-open-api
9
+
10
+ # [19.1.0-dev.0](https://gitlab.com/rxap/packages/compare/@rxap/workspace-open-api@19.0.14-dev.1...@rxap/workspace-open-api@19.1.0-dev.0) (2025-03-26)
11
+
12
+ ### Features
13
+
14
+ - **open-api:** add HTTP resource generation utility ([ff87c86](https://gitlab.com/rxap/packages/commit/ff87c86371ee5cedbf3ef763d7f7c9546df3962e))
15
+
6
16
  ## [19.0.14-dev.1](https://gitlab.com/rxap/packages/compare/@rxap/workspace-open-api@19.0.14-dev.0...@rxap/workspace-open-api@19.0.14-dev.1) (2025-03-12)
7
17
 
8
18
  **Note:** Version bump only for package @rxap/workspace-open-api
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "19.0.14-dev.1",
2
+ "version": "19.1.0-dev.1",
3
3
  "name": "@rxap/workspace-open-api",
4
4
  "description": "This package provides utilities and generators for working with OpenAPI specifications in a workspace. It includes functionality for generating TypeScript interfaces, data sources, directives, remote methods, and operation commands based on an OpenAPI schema. The package also offers tools for loading OpenAPI configurations and resolving references within the schema.\n",
5
5
  "license": "GPL-3.0-or-later",
@@ -7,7 +7,7 @@
7
7
  "@nx/devkit": "20.5.0",
8
8
  "@rxap/json-schema-to-typescript": "^16.1.2-dev.0",
9
9
  "@rxap/utilities": "^16.4.4-dev.0",
10
- "@rxap/workspace-utilities": "^19.8.0-dev.1",
10
+ "@rxap/workspace-utilities": "^19.8.0-dev.2",
11
11
  "openapi-types": "^10.0.0",
12
12
  "ts-morph": "^18.0.0",
13
13
  "tslib": "2.6.2",
@@ -41,7 +41,7 @@
41
41
  },
42
42
  "schematics": "./generators.json",
43
43
  "type": "commonjs",
44
- "gitHead": "e4552670b179901abc7ce57cc3ff490ac705b867",
44
+ "gitHead": "34e20191298b8ccff75100a589bf0cfc95938a27",
45
45
  "types": "./src/index.d.ts",
46
46
  "main": "./src/index.js"
47
47
  }
package/src/index.d.ts CHANGED
@@ -23,6 +23,7 @@ export * from './lib/create-directive';
23
23
  export * from './lib/generate-components';
24
24
  export * from './lib/generate-data-source';
25
25
  export * from './lib/generate-directives';
26
+ export * from './lib/generate-http-resource';
26
27
  export * from './lib/generate-index-exports';
27
28
  export * from './lib/generate-interfaces';
28
29
  export * from './lib/generate-operation-command';
package/src/index.js CHANGED
@@ -29,6 +29,7 @@ tslib_1.__exportStar(require("./lib/create-directive"), exports);
29
29
  tslib_1.__exportStar(require("./lib/generate-components"), exports);
30
30
  tslib_1.__exportStar(require("./lib/generate-data-source"), exports);
31
31
  tslib_1.__exportStar(require("./lib/generate-directives"), exports);
32
+ tslib_1.__exportStar(require("./lib/generate-http-resource"), exports);
32
33
  tslib_1.__exportStar(require("./lib/generate-index-exports"), exports);
33
34
  tslib_1.__exportStar(require("./lib/generate-interfaces"), exports);
34
35
  tslib_1.__exportStar(require("./lib/generate-operation-command"), exports);
package/src/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/workspace/open-api/src/index.ts"],"names":[],"mappings":";;;AAAA,mBAAmB;AACnB,4EAAkD;AAClD,kGAAwE;AACxE,6EAAmD;AACnD,2EAAiD;AACjD,gFAAsD;AACtD,4EAAkD;AAClD,uEAA6C;AAC7C,8EAAoD;AACpD,kFAAwD;AACxD,qFAA2D;AAC3D,uEAA6C;AAC7C,2EAAiD;AACjD,iFAAuD;AACvD,yEAA+C;AAC/C,uFAA6D;AAC7D,8EAAoD;AACpD,8EAAoD;AACpD,gFAAsD;AACtD,4EAAkD;AAClD,YAAY;AAEZ,UAAU;AACV,uDAA6B;AAC7B,sDAA4B;AAC5B,iEAAuC;AACvC,oEAA0C;AAC1C,qEAA2C;AAC3C,oEAA0C;AAC1C,uEAA6C;AAC7C,oEAA0C;AAC1C,2EAAiD;AACjD,mEAAyC;AACzC,oEAA0C;AAC1C,uEAA6C;AAC7C,sEAA4C;AAC5C,kEAAwC;AACxC,qEAA2C;AAC3C,wDAA8B;AAC9B,4DAAkC;AAClC,sDAA4B;AAC5B,YAAY"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/workspace/open-api/src/index.ts"],"names":[],"mappings":";;;AAAA,mBAAmB;AACnB,4EAAkD;AAClD,kGAAwE;AACxE,6EAAmD;AACnD,2EAAiD;AACjD,gFAAsD;AACtD,4EAAkD;AAClD,uEAA6C;AAC7C,8EAAoD;AACpD,kFAAwD;AACxD,qFAA2D;AAC3D,uEAA6C;AAC7C,2EAAiD;AACjD,iFAAuD;AACvD,yEAA+C;AAC/C,uFAA6D;AAC7D,8EAAoD;AACpD,8EAAoD;AACpD,gFAAsD;AACtD,4EAAkD;AAClD,YAAY;AAEZ,UAAU;AACV,uDAA6B;AAC7B,sDAA4B;AAC5B,iEAAuC;AACvC,oEAA0C;AAC1C,qEAA2C;AAC3C,oEAA0C;AAC1C,uEAA6C;AAC7C,uEAA6C;AAC7C,oEAA0C;AAC1C,2EAAiD;AACjD,mEAAyC;AACzC,oEAA0C;AAC1C,uEAA6C;AAC7C,sEAA4C;AAC5C,kEAAwC;AACxC,qEAA2C;AAC3C,wDAA8B;AAC9B,4DAAkC;AAClC,sDAA4B;AAC5B,YAAY"}
@@ -6,3 +6,5 @@ export declare const DIRECTIVE_BASE_PATH = "directives";
6
6
  export declare const DIRECTIVE_FILE_SUFFIX = "directive";
7
7
  export declare const COMMAND_BASE_PATH = "commands";
8
8
  export declare const COMMAND_FILE_SUFFIX = "command";
9
+ export declare const HTTP_RESOURCE_FILE_SUFFIX = "http-resource";
10
+ export declare const HTTP_RESOURCE_BASE_PATH = "http-resources";
package/src/lib/const.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.COMMAND_FILE_SUFFIX = exports.COMMAND_BASE_PATH = exports.DIRECTIVE_FILE_SUFFIX = exports.DIRECTIVE_BASE_PATH = exports.REMOTE_METHOD_FILE_SUFFIX = exports.REMOTE_METHOD_BASE_PATH = exports.DATA_SOURCE_FILE_SUFFIX = exports.DATA_SOURCE_BASE_PATH = void 0;
3
+ exports.HTTP_RESOURCE_BASE_PATH = exports.HTTP_RESOURCE_FILE_SUFFIX = exports.COMMAND_FILE_SUFFIX = exports.COMMAND_BASE_PATH = exports.DIRECTIVE_FILE_SUFFIX = exports.DIRECTIVE_BASE_PATH = exports.REMOTE_METHOD_FILE_SUFFIX = exports.REMOTE_METHOD_BASE_PATH = exports.DATA_SOURCE_FILE_SUFFIX = exports.DATA_SOURCE_BASE_PATH = void 0;
4
4
  exports.DATA_SOURCE_BASE_PATH = 'data-sources';
5
5
  exports.DATA_SOURCE_FILE_SUFFIX = 'data-source';
6
6
  exports.REMOTE_METHOD_BASE_PATH = 'remote-methods';
@@ -9,4 +9,6 @@ exports.DIRECTIVE_BASE_PATH = 'directives';
9
9
  exports.DIRECTIVE_FILE_SUFFIX = 'directive';
10
10
  exports.COMMAND_BASE_PATH = 'commands';
11
11
  exports.COMMAND_FILE_SUFFIX = 'command';
12
+ exports.HTTP_RESOURCE_FILE_SUFFIX = 'http-resource';
13
+ exports.HTTP_RESOURCE_BASE_PATH = 'http-resources';
12
14
  //# sourceMappingURL=const.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"const.js","sourceRoot":"","sources":["../../../../../../packages/workspace/open-api/src/lib/const.ts"],"names":[],"mappings":";;;AAAa,QAAA,qBAAqB,GAAG,cAAc,CAAC;AACvC,QAAA,uBAAuB,GAAG,aAAa,CAAC;AACxC,QAAA,uBAAuB,GAAG,gBAAgB,CAAC;AAC3C,QAAA,yBAAyB,GAAG,eAAe,CAAC;AAC5C,QAAA,mBAAmB,GAAG,YAAY,CAAC;AACnC,QAAA,qBAAqB,GAAG,WAAW,CAAC;AACpC,QAAA,iBAAiB,GAAG,UAAU,CAAC;AAC/B,QAAA,mBAAmB,GAAG,SAAS,CAAC"}
1
+ {"version":3,"file":"const.js","sourceRoot":"","sources":["../../../../../../packages/workspace/open-api/src/lib/const.ts"],"names":[],"mappings":";;;AAAa,QAAA,qBAAqB,GAAG,cAAc,CAAC;AACvC,QAAA,uBAAuB,GAAG,aAAa,CAAC;AACxC,QAAA,uBAAuB,GAAG,gBAAgB,CAAC;AAC3C,QAAA,yBAAyB,GAAG,eAAe,CAAC;AAC5C,QAAA,mBAAmB,GAAG,YAAY,CAAC;AACnC,QAAA,qBAAqB,GAAG,WAAW,CAAC;AACpC,QAAA,iBAAiB,GAAG,UAAU,CAAC;AAC/B,QAAA,mBAAmB,GAAG,SAAS,CAAC;AAChC,QAAA,yBAAyB,GAAG,eAAe,CAAC;AAC5C,QAAA,uBAAuB,GAAG,gBAAgB,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { GenerateParameter, OpenApiSchemaBase } from '@rxap/workspace-open-api';
2
+ export declare function GenerateHttpResource(parameter: GenerateParameter<OpenApiSchemaBase>): void;
@@ -0,0 +1,117 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GenerateHttpResource = GenerateHttpResource;
4
+ const utilities_1 = require("@rxap/utilities");
5
+ const workspace_open_api_1 = require("@rxap/workspace-open-api");
6
+ const path_1 = require("path");
7
+ const ts_morph_1 = require("ts-morph");
8
+ const const_1 = require("./const");
9
+ function GenerateHttpResource(parameter) {
10
+ var _a, _b, _c, _d, _e;
11
+ if (parameter.method.toUpperCase() !== 'GET') {
12
+ return;
13
+ }
14
+ const operationId = parameter.operationId;
15
+ const name = [operationId, const_1.HTTP_RESOURCE_FILE_SUFFIX].join('.');
16
+ const fileName = (0, path_1.join)(const_1.HTTP_RESOURCE_BASE_PATH, (0, utilities_1.dasherize)(name) + '.ts');
17
+ const sourceFile = parameter.project.createSourceFile(fileName);
18
+ const importStructures = [
19
+ {
20
+ moduleSpecifier: '@vault/ui-shared',
21
+ namedImports: [
22
+ { name: 'OPEN_API_OPERATION_ID' },
23
+ { name: 'OPEN_API_SERVER_ID' },
24
+ { name: 'SignalProperties' },
25
+ { name: 'toHttpParams' },
26
+ ],
27
+ },
28
+ {
29
+ moduleSpecifier: '@angular/common/http',
30
+ namedImports: [{ name: 'HttpContext' }, { name: 'httpResource' }],
31
+ },
32
+ ];
33
+ const { type: responseType, name: responseName } = (0, workspace_open_api_1.GetResponseType)(parameter);
34
+ const parameterType = (0, workspace_open_api_1.GetParameterType)(parameter);
35
+ const { type: requestBodyType, name: requestBodyName } = (0, workspace_open_api_1.GetRequestBodyType)(parameter);
36
+ if (responseName) {
37
+ importStructures.push({
38
+ moduleSpecifier: (_a = parameter.options.packageName) !== null && _a !== void 0 ? _a : `../responses/${(0, utilities_1.dasherize)(responseName.replace(/Response$/, ''))}.response`,
39
+ namedImports: [{ name: responseName }],
40
+ });
41
+ }
42
+ if (!['void', 'any'].includes(parameterType)) {
43
+ importStructures.push({
44
+ moduleSpecifier: (_b = parameter.options.packageName) !== null && _b !== void 0 ? _b : `../parameters/${(0, utilities_1.dasherize)(parameterType.replace(/Parameter$/, ''))}.parameter`,
45
+ namedImports: [{ name: parameterType }],
46
+ });
47
+ }
48
+ if (requestBodyName) {
49
+ importStructures.push({
50
+ moduleSpecifier: (_c = parameter.options.packageName) !== null && _c !== void 0 ? _c : `../request-bodies/${(0, utilities_1.dasherize)(requestBodyName.replace(/RequestBody$/, ''))}.request-body`,
51
+ namedImports: [{ name: requestBodyName }],
52
+ });
53
+ }
54
+ const withoutParameters = parameterType === 'void';
55
+ const withoutRequestBody = requestBodyType === 'void';
56
+ const withoutParametersAndRequestBody = withoutParameters && withoutRequestBody;
57
+ const httpOptions = {};
58
+ if ((_d = parameter.parameters) === null || _d === void 0 ? void 0 : _d.some((p) => !(0, workspace_open_api_1.IsRefSchemaObject)(p) && p.in === 'path')) {
59
+ httpOptions['url'] = (w) => {
60
+ w.write('`');
61
+ w.write(parameter.path.replace(/\{([^}]+)\}/g, (_, name) => `\${parameters.${name}()}`));
62
+ w.write('`');
63
+ };
64
+ }
65
+ else {
66
+ httpOptions['url'] = (w) => w.quote(parameter.path);
67
+ }
68
+ httpOptions['method'] = (w) => w.quote(parameter.method.toUpperCase());
69
+ if (!withoutParameters) {
70
+ httpOptions['params'] = `toHttpParams(parameters, [${parameter.parameters
71
+ .filter((p) => !(0, workspace_open_api_1.IsRefSchemaObject)(p) && p.in === 'query')
72
+ .map((p) => `'${p.name}'`)
73
+ .join(', ')}])`;
74
+ }
75
+ if (!withoutRequestBody) {
76
+ httpOptions['body'] = 'requestBody()';
77
+ }
78
+ httpOptions['context'] = `new HttpContext().set(OPEN_API_OPERATION_ID, '${parameter.operationId}').set(OPEN_API_SERVER_ID, '${parameter.options.serverId}')`;
79
+ httpOptions['withCredentials'] = 'true';
80
+ const parameters = [];
81
+ if (!withoutParametersAndRequestBody) {
82
+ if (!withoutRequestBody) {
83
+ parameters.push({
84
+ name: 'requestBody',
85
+ type: `Signal<${requestBodyType}>`,
86
+ });
87
+ }
88
+ if (!withoutParameters) {
89
+ parameters.push({
90
+ name: 'parameters',
91
+ type: `SignalProperties<${parameterType}>`,
92
+ initializer: ((_e = parameter.parameters) === null || _e === void 0 ? void 0 : _e.some((p) => !(0, workspace_open_api_1.IsRefSchemaObject)(p) && p.required))
93
+ ? undefined
94
+ : '{}',
95
+ });
96
+ }
97
+ }
98
+ sourceFile.addFunction({
99
+ isExported: true,
100
+ name: (0, utilities_1.camelize)([parameter.operationId, 'http-resource'].join('_')),
101
+ parameters,
102
+ statements: [
103
+ `return httpResource<${responseType}>(`,
104
+ (w) => {
105
+ w.write('() => (');
106
+ ts_morph_1.Writers.object(httpOptions)(w);
107
+ w.write(')');
108
+ },
109
+ `);`,
110
+ ],
111
+ });
112
+ sourceFile.addImportDeclarations(importStructures);
113
+ sourceFile.organizeImports({
114
+ ensureNewLineAtEndOfFile: true,
115
+ });
116
+ }
117
+ //# sourceMappingURL=generate-http-resource.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-http-resource.js","sourceRoot":"","sources":["../../../../../../packages/workspace/open-api/src/lib/generate-http-resource.ts"],"names":[],"mappings":"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"}