@seamapi/nextlove-sdk-generator 1.4.1 → 1.4.2

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.
@@ -28,10 +28,14 @@ export function deepExtractResourceObjectSchemas({ schema_name, schema_body, })
28
28
  property_schema.type === "array" &&
29
29
  "items" in property_schema &&
30
30
  "properties" in property_schema.items;
31
+ const is_nullable_set = "nullable" in property_schema;
31
32
  if (is_object_schema) {
32
33
  property_schemas_with_type_references[property_name] = {
33
34
  type: "object",
34
35
  reference_object_type_name,
36
+ ...(is_nullable_set && {
37
+ nullable: property_schema.nullable,
38
+ }),
35
39
  };
36
40
  createResourceSchema({
37
41
  name: reference_object_type_name,
@@ -43,6 +47,9 @@ export function deepExtractResourceObjectSchemas({ schema_name, schema_body, })
43
47
  property_schemas_with_type_references[property_name] = {
44
48
  type: "array",
45
49
  reference_object_type_name,
50
+ ...(is_nullable_set && {
51
+ nullable: property_schema.nullable,
52
+ }),
46
53
  };
47
54
  createResourceSchema({
48
55
  name: reference_object_type_name,
@@ -72,6 +79,9 @@ export function deepExtractResourceObjectSchemas({ schema_name, schema_body, })
72
79
  else {
73
80
  property_schemas_with_type_references[property_name] = {
74
81
  type: property_schema.type,
82
+ ...(is_nullable_set && {
83
+ nullable: property_schema.nullable,
84
+ }),
75
85
  };
76
86
  }
77
87
  }
@@ -1 +1 @@
1
- {"version":3,"file":"deep-extract-resource-object-schemas.js","sourceRoot":"","sources":["../../../src/lib/generate-php-sdk/utils/deep-extract-resource-object-schemas.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"deep-extract-resource-object-schemas.js","sourceRoot":"","sources":["../../../src/lib/generate-php-sdk/utils/deep-extract-resource-object-schemas.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,8BAA8B,EAAE,MAAM,4CAA4C,CAAA;AAC3F,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AA8BxC,MAAM,UAAU,gCAAgC,CAAC,EAC/C,WAAW,EACX,WAAW,GAC4B;IACvC,MAAM,kCAAkC,GAGpC,EAAE,CAAA;IAEN,SAAS,oBAAoB,CAAC,EAC5B,IAAI,EACJ,UAAU,EACV,uBAAuB,GAAG,EAAE,GACD;QAC3B,IAAI,CAAC,kCAAkC,CAAC,IAAI,CAAC,EAAE;YAC7C,kCAAkC,CAAC,IAAI,CAAC,GAAG;gBACzC,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC;gBACtB,UAAU,EAAE,sBAAsB,CAAC,UAAU,CAAC;gBAC9C,uBAAuB,EAAE,uBAAuB;aACjD,CAAA;SACF;IACH,CAAC;IAED,SAAS,sBAAsB,CAC7B,gBAA0C;QAE1C,MAAM,qCAAqC,GAGvC,EAAE,CAAA;QAEN,KAAK,MAAM,aAAa,IAAI,gBAAgB,EAAE;YAC5C,MAAM,eAAe,GAAG,gBAAgB,CAAC,aAAa,CAAmB,CAAA;YACzE,MAAM,0BAA0B,GAAG,UAAU,CAC3C,GAAG,WAAW,IAAI,aAAa,EAAE,CAClC,CAAA;YACD,IAAI,MAAM,IAAI,eAAe,EAAE;gBAC7B,OAAO,CAAC,KAAK,CAAC,sDAAsD,CAAC,CAAA;gBACrE,SAAQ;aACT;YAED,MAAM,0BAA0B,GAC9B,OAAO,IAAI,eAAe,IAAI,OAAO,IAAI,eAAe,CAAA;YAC1D,MAAM,gBAAgB,GACpB,CAAC,0BAA0B;gBAC3B,eAAe,CAAC,IAAI,KAAK,QAAQ;gBACjC,YAAY,IAAI,eAAe,CAAA;YACjC,MAAM,6BAA6B,GACjC,CAAC,0BAA0B;gBAC3B,eAAe,CAAC,IAAI,KAAK,OAAO;gBAChC,OAAO,IAAI,eAAe;gBAC1B,YAAY,IAAI,eAAe,CAAC,KAAK,CAAA;YACvC,MAAM,eAAe,GAAG,UAAU,IAAI,eAAe,CAAA;YAErD,IAAI,gBAAgB,EAAE;gBACpB,qCAAqC,CAAC,aAAa,CAAC,GAAG;oBACrD,IAAI,EAAE,QAAQ;oBACd,0BAA0B;oBAC1B,GAAG,CAAC,eAAe,IAAI;wBACrB,QAAQ,EAAE,eAAe,CAAC,QAAQ;qBACnC,CAAC;iBACH,CAAA;gBAED,oBAAoB,CAAC;oBACnB,IAAI,EAAE,0BAA0B;oBAChC,UAAU,EAAE,eAAe,CAAC,UAAU;oBACtC,uBAAuB,EAAE,eAAe,EAAE,QAAQ;iBACnD,CAAC,CAAA;aACH;iBAAM,IAAI,6BAA6B,EAAE;gBACxC,qCAAqC,CAAC,aAAa,CAAC,GAAG;oBACrD,IAAI,EAAE,OAAO;oBACb,0BAA0B;oBAC1B,GAAG,CAAC,eAAe,IAAI;wBACrB,QAAQ,EAAE,eAAe,CAAC,QAAQ;qBACnC,CAAC;iBACH,CAAA;gBAED,oBAAoB,CAAC;oBACnB,IAAI,EAAE,0BAA0B;oBAChC,UAAU,EAAG,eAAe,CAAC,KAAa,CAAC,UAAU;oBACrD,uBAAuB,EAAG,eAAe,CAAC,KAAa,EAAE,QAAQ;iBAClE,CAAC,CAAA;aACH;iBAAM,IAAI,0BAA0B,EAAE;gBACrC,MAAM,gBAAgB,GAAG,8BAA8B,CAAC,eAAe,CAAC,CAAA;gBAExE,IAAI,YAAY,IAAI,gBAAgB,EAAE;oBACpC,qCAAqC,CAAC,aAAa,CAAC,GAAG;wBACrD,IAAI,EAAE,gBAAgB,CAAC,IAAI;wBAC3B,0BAA0B;qBAC3B,CAAA;oBAED,oBAAoB,CAAC;wBACnB,IAAI,EAAE,0BAA0B;wBAChC,UAAU,EAAE,gBAAgB,CAAC,UAAU;wBACvC,uBAAuB,EAAE,gBAAgB,EAAE,QAAQ;qBACpD,CAAC,CAAA;iBACH;qBAAM;oBACL,qCAAqC,CAAC,aAAa,CAAC;wBAClD,gBAAgB,CAAA;iBACnB;gBACD,SAAQ;aACT;iBAAM;gBACL,qCAAqC,CAAC,aAAa,CAAC,GAAG;oBACrD,IAAI,EAAE,eAAe,CAAC,IAAW;oBACjC,GAAG,CAAC,eAAe,IAAI;wBACrB,QAAQ,EAAE,eAAe,CAAC,QAAQ;qBACnC,CAAC;iBACH,CAAA;aACF;SACF;QAED,OAAO,qCAAqC,CAAA;IAC9C,CAAC;IAED,IAAI,wBAAwB,CAAA;IAE5B,IAAI,OAAO,IAAI,WAAW,IAAI,OAAO,IAAI,WAAW,EAAE;QACpD,MAAM,8BAA8B,GAClC,8BAA8B,CAAC,WAAW,CAAC,CAAA;QAE7C,wBAAwB;YACtB,YAAY,IAAI,8BAA8B;gBAC5C,CAAC,CAAC,8BAA8B,CAAC,UAAU;gBAC3C,CAAC,CAAC,EAAE,CAAA;KACT;IAED,wBAAwB;QACtB,YAAY,IAAI,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAA;IAE3D,oBAAoB,CAAC;QACnB,IAAI,EAAE,UAAU,CAAC,WAAW,CAAC;QAC7B,UAAU,EAAE,wBAAoD;QAChE,uBAAuB,EACrB,UAAU,IAAI,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;KACxD,CAAC,CAAA;IAEF,OAAO,kCAAkC,CAAA;AAC3C,CAAC"}
@@ -7,8 +7,11 @@ export const generateResourceObjectClass = ({ resource_name, resource_properties
7
7
  const is_array_referencing_resource = "type" in prop_schema &&
8
8
  prop_schema.type === "array" &&
9
9
  "reference_object_type_name" in prop_schema;
10
+ const is_property_required = "nullable" in prop_schema
11
+ ? !prop_schema.nullable
12
+ : required_property_names.includes(prop_name);
10
13
  if (is_object_referencing_resource) {
11
- return `${prop_name}: ${prop_schema.reference_object_type_name}::from_json($json->${prop_name})${required_property_names.includes(prop_name) ? "," : " ?? null,"}`;
14
+ return `${prop_name}: ${is_property_required ? "" : `isset($json->${prop_name}) ? `}${prop_schema.reference_object_type_name}::from_json($json->${prop_name})${is_property_required ? "," : " : null,"}`;
12
15
  }
13
16
  else if (is_array_referencing_resource) {
14
17
  return `${prop_name}: array_map(
@@ -17,7 +20,7 @@ export const generateResourceObjectClass = ({ resource_name, resource_properties
17
20
  ),`;
18
21
  }
19
22
  else {
20
- return `${prop_name}: $json->${prop_name}${required_property_names.includes(prop_name) ? "," : " ?? null,"}`;
23
+ return `${prop_name}: $json->${prop_name}${is_property_required ? "," : " ?? null,"}`;
21
24
  }
22
25
  };
23
26
  const generateFromJsonMethod = () => {
@@ -46,11 +49,10 @@ export const generateResourceObjectClass = ({ resource_name, resource_properties
46
49
  const php_type = is_object_referencing_resource
47
50
  ? prop_schema.reference_object_type_name
48
51
  : getPhpType("type" in prop_schema ? prop_schema.type : "mixed");
49
- return `public ${php_type}${php_type === "mixed"
50
- ? ""
51
- : required_property_names.includes(prop_name)
52
- ? ""
53
- : " | null"} $${prop_name},`;
52
+ const is_property_required = "nullable" in prop_schema
53
+ ? !prop_schema.nullable
54
+ : required_property_names.includes(prop_name);
55
+ return `public ${php_type}${php_type === "mixed" ? "" : is_property_required ? "" : " | null"} $${prop_name},`;
54
56
  })
55
57
  .join("\n ")}
56
58
  ) {
@@ -1 +1 @@
1
- {"version":3,"file":"generate-resource-object-class.js","sourceRoot":"","sources":["../../../src/lib/generate-php-sdk/utils/generate-resource-object-class.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAQ9C,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,EAC1C,aAAa,EACb,mBAAmB,EACnB,uBAAuB,GAChB,EAAE,EAAE;IACX,MAAM,sBAAsB,GAAG,CAC7B,SAAiB,EACjB,WAA8C,EAC9C,EAAE;QACF,MAAM,8BAA8B,GAClC,MAAM,IAAI,WAAW;YACrB,WAAW,CAAC,IAAI,KAAK,QAAQ;YAC7B,4BAA4B,IAAI,WAAW,CAAA;QAE7C,MAAM,6BAA6B,GACjC,MAAM,IAAI,WAAW;YACrB,WAAW,CAAC,IAAI,KAAK,OAAO;YAC5B,4BAA4B,IAAI,WAAW,CAAA;QAE7C,IAAI,8BAA8B,EAAE;YAClC,OAAO,GAAG,SAAS,KACjB,WAAW,CAAC,0BACd,sBAAsB,SAAS,IAC7B,uBAAuB,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,WACtD,EAAE,CAAA;SACH;aAAM,IAAI,6BAA6B,EAAE;YACxC,OAAO,GAAG,SAAS;iBACR,SAAS,CAAC,CAAC,CAAC,QAAQ,WAAW,CAAC,0BAA0B,gBAAgB,SAAS,CAAC,CAAC,CAAC;mBACpF,SAAS;WACjB,CAAA;SACN;aAAM;YACL,OAAO,GAAG,SAAS,YAAY,SAAS,GACtC,uBAAuB,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,WACtD,EAAE,CAAA;SACH;IACH,CAAC,CAAA;IAED,MAAM,sBAAsB,GAAG,GAAG,EAAE;QAClC,OAAO;qDAC0C,aAAa;;;;;;cAMpD,MAAM,CAAC,OAAO,CAAC,mBAAmB,CAAC;aAClC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,WAAW,CAAC,EAAE,EAAE,CAC3B,sBAAsB,CAAC,IAAI,EAAE,WAAW,CAAC,CAC1C;aACA,IAAI,CAAC,gBAAgB,CAAC;;;GAGlC,CAAA;IACD,CAAC,CAAA;IAED,MAAM,mBAAmB,GAAG,GAAG,EAAE;QAC/B,OAAO;;UAED,MAAM,CAAC,OAAO,CAAC,mBAAmB,CAAC;aAClC,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,WAAW,CAAC,EAAE,EAAE;YAChC,MAAM,8BAA8B,GAClC,MAAM,IAAI,WAAW;gBACrB,WAAW,CAAC,IAAI,KAAK,QAAQ;gBAC7B,4BAA4B,IAAI,WAAW,CAAA;YAC7C,MAAM,QAAQ,GAAG,8BAA8B;gBAC7C,CAAC,CAAC,WAAW,CAAC,0BAA0B;gBACxC,CAAC,CAAC,UAAU,CAAC,MAAM,IAAI,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAA;YAElE,OAAO,UAAU,QAAQ,GACvB,QAAQ,KAAK,OAAO;gBAClB,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,uBAAuB,CAAC,QAAQ,CAAC,SAAS,CAAC;oBAC7C,CAAC,CAAC,EAAE;oBACJ,CAAC,CAAC,SACN,KAAK,SAAS,GAAG,CAAA;QACnB,CAAC,CAAC;aACD,IAAI,CAAC,YAAY,CAAC;;;GAG1B,CAAA;IACD,CAAC,CAAA;IAED,MAAM,QAAQ,GAAG;;;;QAIX,aAAa;;MAEf,sBAAsB,EAAE;;MAExB,mBAAmB,EAAE;;CAE1B,CAAA;IAEC,OAAO,QAAQ,CAAA;AACjB,CAAC,CAAA"}
1
+ {"version":3,"file":"generate-resource-object-class.js","sourceRoot":"","sources":["../../../src/lib/generate-php-sdk/utils/generate-resource-object-class.ts"],"names":[],"mappings":"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"}
package/lib/types.d.ts CHANGED
@@ -39,20 +39,25 @@ export type PrimitiveSchema = {
39
39
  } | {
40
40
  type: "boolean";
41
41
  enum?: boolean[];
42
+ nullable?: boolean;
42
43
  } | {
43
44
  type: "integer";
44
45
  enum?: number[];
46
+ nullable?: boolean;
45
47
  } | {
46
48
  type: "number";
49
+ nullable?: boolean;
47
50
  };
48
51
  export type ArraySchema = {
49
52
  type: "array";
50
53
  items: PropertySchema;
54
+ nullable?: boolean;
51
55
  };
52
56
  export type ObjSchema = {
53
57
  type: "object";
54
58
  properties: Record<string, PropertySchema>;
55
59
  required: string[];
60
+ nullable?: boolean;
56
61
  };
57
62
  export type RefSchema = {
58
63
  $ref: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@seamapi/nextlove-sdk-generator",
3
- "version": "1.4.1",
3
+ "version": "1.4.2",
4
4
  "description": "Utilities for building NextLove SDK Generators",
5
5
  "type": "module",
6
6
  "main": "index.js",
@@ -82,11 +82,15 @@ export function deepExtractResourceObjectSchemas({
82
82
  property_schema.type === "array" &&
83
83
  "items" in property_schema &&
84
84
  "properties" in property_schema.items
85
+ const is_nullable_set = "nullable" in property_schema
85
86
 
86
87
  if (is_object_schema) {
87
88
  property_schemas_with_type_references[property_name] = {
88
89
  type: "object",
89
90
  reference_object_type_name,
91
+ ...(is_nullable_set && {
92
+ nullable: property_schema.nullable,
93
+ }),
90
94
  }
91
95
 
92
96
  createResourceSchema({
@@ -98,6 +102,9 @@ export function deepExtractResourceObjectSchemas({
98
102
  property_schemas_with_type_references[property_name] = {
99
103
  type: "array",
100
104
  reference_object_type_name,
105
+ ...(is_nullable_set && {
106
+ nullable: property_schema.nullable,
107
+ }),
101
108
  }
102
109
 
103
110
  createResourceSchema({
@@ -127,6 +134,9 @@ export function deepExtractResourceObjectSchemas({
127
134
  } else {
128
135
  property_schemas_with_type_references[property_name] = {
129
136
  type: property_schema.type as any,
137
+ ...(is_nullable_set && {
138
+ nullable: property_schema.nullable,
139
+ }),
130
140
  }
131
141
  }
132
142
  }
@@ -26,11 +26,18 @@ export const generateResourceObjectClass = ({
26
26
  prop_schema.type === "array" &&
27
27
  "reference_object_type_name" in prop_schema
28
28
 
29
+ const is_property_required =
30
+ "nullable" in prop_schema
31
+ ? !prop_schema.nullable
32
+ : required_property_names.includes(prop_name)
33
+
29
34
  if (is_object_referencing_resource) {
30
35
  return `${prop_name}: ${
36
+ is_property_required ? "" : `isset($json->${prop_name}) ? `
37
+ }${
31
38
  prop_schema.reference_object_type_name
32
39
  }::from_json($json->${prop_name})${
33
- required_property_names.includes(prop_name) ? "," : " ?? null,"
40
+ is_property_required ? "," : " : null,"
34
41
  }`
35
42
  } else if (is_array_referencing_resource) {
36
43
  return `${prop_name}: array_map(
@@ -39,7 +46,7 @@ export const generateResourceObjectClass = ({
39
46
  ),`
40
47
  } else {
41
48
  return `${prop_name}: $json->${prop_name}${
42
- required_property_names.includes(prop_name) ? "," : " ?? null,"
49
+ is_property_required ? "," : " ?? null,"
43
50
  }`
44
51
  }
45
52
  }
@@ -74,13 +81,13 @@ export const generateResourceObjectClass = ({
74
81
  const php_type = is_object_referencing_resource
75
82
  ? prop_schema.reference_object_type_name
76
83
  : getPhpType("type" in prop_schema ? prop_schema.type : "mixed")
84
+ const is_property_required =
85
+ "nullable" in prop_schema
86
+ ? !prop_schema.nullable
87
+ : required_property_names.includes(prop_name)
77
88
 
78
89
  return `public ${php_type}${
79
- php_type === "mixed"
80
- ? ""
81
- : required_property_names.includes(prop_name)
82
- ? ""
83
- : " | null"
90
+ php_type === "mixed" ? "" : is_property_required ? "" : " | null"
84
91
  } $${prop_name},`
85
92
  })
86
93
  .join("\n ")}
package/src/lib/types.ts CHANGED
@@ -43,16 +43,21 @@ export type PrimitiveSchema =
43
43
  format?: "uuid" | "date-time" | "uri"
44
44
  nullable?: boolean
45
45
  }
46
- | { type: "boolean"; enum?: boolean[] }
47
- | { type: "integer"; enum?: number[] }
48
- | { type: "number" }
46
+ | { type: "boolean"; enum?: boolean[]; nullable?: boolean }
47
+ | { type: "integer"; enum?: number[]; nullable?: boolean }
48
+ | { type: "number"; nullable?: boolean }
49
49
 
50
- export type ArraySchema = { type: "array"; items: PropertySchema }
50
+ export type ArraySchema = {
51
+ type: "array"
52
+ items: PropertySchema
53
+ nullable?: boolean
54
+ }
51
55
 
52
56
  export type ObjSchema = {
53
57
  type: "object"
54
58
  properties: Record<string, PropertySchema>
55
59
  required: string[]
60
+ nullable?: boolean
56
61
  }
57
62
 
58
63
  export type RefSchema = {