@seamapi/nextlove-sdk-generator 1.14.12 → 1.14.13

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.
@@ -1 +1,6 @@
1
- export declare const generateCSharpSDK: (packageVersion?: string, dotNetVersions?: string[]) => Promise<any>;
1
+ import { type SdkGeneratorOptions } from "@seamapi/nextlove-sdk-generator";
2
+ export type CSharpSDKOptions = {
3
+ packageVersion?: string;
4
+ dotNetVersions?: string[];
5
+ } & SdkGeneratorOptions;
6
+ export declare const generateCSharpSDK: (options?: CSharpSDKOptions) => Promise<any>;
@@ -1,17 +1,17 @@
1
1
  import * as url from "url";
2
2
  import path from "path";
3
- import axios from "axios";
4
3
  import { pascalCase } from "change-case";
5
4
  import { deepFlattenAllOfSchema, getParameterAndResponseSchema, populateFs, } from "@seamapi/nextlove-sdk-generator";
5
+ import { modifySchemaForSpecialCases } from "./schema-modifications.js";
6
6
  import * as cs from "./codegen.js";
7
7
  import { generateDataclassFileForSchema, generateDataclassFileForRoutes, } from "./templates/dataclass.js";
8
8
  import { GLOBAL_NAMESPACE } from "./constants.js";
9
9
  import { csprojTemplate } from "./generate-csproj.js";
10
+ import resolveOpenapiSpec from "../../lib/openapi/resolve-openapi-spec.js";
10
11
  Error.stackTraceLimit = Infinity;
11
- export const generateCSharpSDK = async (packageVersion = "1.0.0", dotNetVersions = ["6.0", "7.0"]) => {
12
- const openapi = await axios
13
- .get("https://connect.getseam.com/openapi.json")
14
- .then((res) => res.data);
12
+ export const generateCSharpSDK = async (options = {}) => {
13
+ const { packageVersion = "1.0.0", dotNetVersions = ["6.0", "7.0"] } = options;
14
+ const openapi = await resolveOpenapiSpec(options);
15
15
  const routes = Object.entries(openapi.paths).map(([path, v]) => ({
16
16
  path,
17
17
  ...v,
@@ -68,6 +68,7 @@ export const generateCSharpSDK = async (packageVersion = "1.0.0", dotNetVersions
68
68
  .map(([schema_name, schema]) => [schema_name, schema])
69
69
  .forEach(([schema_name, schema]) => {
70
70
  try {
71
+ schema = modifySchemaForSpecialCases(schema_name, schema);
71
72
  if ("allOf" in schema) {
72
73
  const flattened = deepFlattenAllOfSchema(schema);
73
74
  if (flattened == null)
@@ -1 +1 @@
1
- {"version":3,"file":"generate-csharp-sdk.js","sourceRoot":"","sources":["../../src/lib/generate-csharp-sdk/generate-csharp-sdk.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generate-csharp-sdk.js","sourceRoot":"","sources":["../../src/lib/generate-csharp-sdk/generate-csharp-sdk.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import type { PropertySchema } from "../../lib/types.js";
2
+ export declare const modifySchemaForSpecialCases: (schemaName: string, schema: PropertySchema) => PropertySchema;
@@ -0,0 +1,12 @@
1
+ export const modifySchemaForSpecialCases = (schemaName, schema) => {
2
+ if (schemaName === "action_attempt" && !("discriminator" in schema)) {
3
+ return {
4
+ ...schema,
5
+ discriminator: {
6
+ propertyName: "action_type",
7
+ },
8
+ };
9
+ }
10
+ return schema;
11
+ };
12
+ //# sourceMappingURL=schema-modifications.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema-modifications.js","sourceRoot":"","sources":["../../src/lib/generate-csharp-sdk/schema-modifications.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,2BAA2B,GAAG,CACzC,UAAkB,EAClB,MAAsB,EACN,EAAE;IAClB,IAAI,UAAU,KAAK,gBAAgB,IAAI,CAAC,CAAC,eAAe,IAAI,MAAM,CAAC,EAAE;QACnE,OAAO;YACL,GAAG,MAAM;YACT,aAAa,EAAE;gBACb,YAAY,EAAE,aAAa;aAC5B;SACgB,CAAA;KACpB;IACD,OAAO,MAAM,CAAA;AACf,CAAC,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@seamapi/nextlove-sdk-generator",
3
- "version": "1.14.12",
3
+ "version": "1.14.13",
4
4
  "description": "Utilities for building NextLove SDK Generators",
5
5
  "type": "module",
6
6
  "main": "index.js",
@@ -1,6 +1,5 @@
1
1
  import * as url from "url"
2
2
  import path from "path"
3
- import axios from "axios"
4
3
  import { pascalCase } from "change-case"
5
4
  import {
6
5
  deepFlattenAllOfSchema,
@@ -9,7 +8,9 @@ import {
9
8
  type OpenAPISchema,
10
9
  type PropertySchema,
11
10
  type Route,
11
+ type SdkGeneratorOptions,
12
12
  } from "@seamapi/nextlove-sdk-generator"
13
+ import { modifySchemaForSpecialCases } from "./schema-modifications.js"
13
14
 
14
15
  import * as cs from "./codegen.js"
15
16
  import {
@@ -19,16 +20,20 @@ import {
19
20
  } from "./templates/dataclass.js"
20
21
  import { GLOBAL_NAMESPACE } from "./constants.js"
21
22
  import { csprojTemplate } from "./generate-csproj.js"
23
+ import resolveOpenapiSpec from "lib/openapi/resolve-openapi-spec.js"
22
24
 
23
25
  Error.stackTraceLimit = Infinity
24
26
 
25
- export const generateCSharpSDK = async (
26
- packageVersion: string = "1.0.0",
27
- dotNetVersions: string[] = ["6.0", "7.0"]
28
- ) => {
29
- const openapi: OpenAPISchema = await axios
30
- .get("https://connect.getseam.com/openapi.json")
31
- .then((res) => res.data)
27
+ export type CSharpSDKOptions = {
28
+ packageVersion?: string
29
+ dotNetVersions?: string[]
30
+ } & SdkGeneratorOptions
31
+
32
+ export const generateCSharpSDK = async (options: CSharpSDKOptions = {}) => {
33
+ const { packageVersion = "1.0.0", dotNetVersions = ["6.0", "7.0"] } = options
34
+
35
+ const openapi: OpenAPISchema = await resolveOpenapiSpec(options)
36
+
32
37
  const routes: Route[] = Object.entries(openapi.paths).map(([path, v]) => ({
33
38
  path,
34
39
  ...v,
@@ -119,6 +124,8 @@ export const generateCSharpSDK = async (
119
124
  )
120
125
  .forEach(([schema_name, schema]) => {
121
126
  try {
127
+ schema = modifySchemaForSpecialCases(schema_name, schema)
128
+
122
129
  if ("allOf" in schema) {
123
130
  const flattened = deepFlattenAllOfSchema(schema)
124
131
  if (flattened == null) return
@@ -0,0 +1,16 @@
1
+ import type { PropertySchema } from "lib/types.js"
2
+
3
+ export const modifySchemaForSpecialCases = (
4
+ schemaName: string,
5
+ schema: PropertySchema
6
+ ): PropertySchema => {
7
+ if (schemaName === "action_attempt" && !("discriminator" in schema)) {
8
+ return {
9
+ ...schema,
10
+ discriminator: {
11
+ propertyName: "action_type",
12
+ },
13
+ } as PropertySchema
14
+ }
15
+ return schema
16
+ }