@voxgig/sdkgen 4.2.0 → 4.2.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.
Files changed (128) hide show
  1. package/bin/voxgig-sdkgen +1 -1
  2. package/dist/helpers/canonType.d.ts +2 -1
  3. package/dist/helpers/canonType.js +36 -0
  4. package/dist/helpers/canonType.js.map +1 -1
  5. package/dist/sdkgen.d.ts +2 -2
  6. package/dist/sdkgen.js +3 -2
  7. package/dist/sdkgen.js.map +1 -1
  8. package/dist/tsconfig.tsbuildinfo +1 -1
  9. package/package.json +1 -1
  10. package/project/.sdk/src/cmp/c/ReadmeEntity_c.ts +2 -2
  11. package/project/.sdk/src/cmp/c/ReadmeHowto_c.ts +2 -2
  12. package/project/.sdk/src/cmp/c/ReadmeQuick_c.ts +2 -2
  13. package/project/.sdk/src/cmp/c/ReadmeRef_c.ts +2 -2
  14. package/project/.sdk/src/cmp/c/ReadmeTopQuick_c.ts +2 -2
  15. package/project/.sdk/src/cmp/c/ReadmeTopTest_c.ts +2 -2
  16. package/project/.sdk/src/cmp/clojure/ReadmeEntity_clojure.ts +2 -2
  17. package/project/.sdk/src/cmp/clojure/ReadmeHowto_clojure.ts +2 -2
  18. package/project/.sdk/src/cmp/clojure/ReadmeQuick_clojure.ts +2 -2
  19. package/project/.sdk/src/cmp/clojure/ReadmeRef_clojure.ts +2 -2
  20. package/project/.sdk/src/cmp/clojure/ReadmeTopQuick_clojure.ts +2 -2
  21. package/project/.sdk/src/cmp/clojure/ReadmeTopTest_clojure.ts +2 -2
  22. package/project/.sdk/src/cmp/cpp/ReadmeEntity_cpp.ts +2 -2
  23. package/project/.sdk/src/cmp/cpp/ReadmeHowto_cpp.ts +2 -2
  24. package/project/.sdk/src/cmp/cpp/ReadmeQuick_cpp.ts +2 -2
  25. package/project/.sdk/src/cmp/cpp/ReadmeRef_cpp.ts +2 -2
  26. package/project/.sdk/src/cmp/cpp/ReadmeTopQuick_cpp.ts +2 -2
  27. package/project/.sdk/src/cmp/cpp/ReadmeTopTest_cpp.ts +2 -2
  28. package/project/.sdk/src/cmp/csharp/ReadmeEntity_csharp.ts +2 -2
  29. package/project/.sdk/src/cmp/csharp/ReadmeHowto_csharp.ts +2 -2
  30. package/project/.sdk/src/cmp/csharp/ReadmeQuick_csharp.ts +2 -2
  31. package/project/.sdk/src/cmp/csharp/ReadmeRef_csharp.ts +2 -2
  32. package/project/.sdk/src/cmp/csharp/ReadmeTopQuick_csharp.ts +2 -2
  33. package/project/.sdk/src/cmp/csharp/ReadmeTopTest_csharp.ts +2 -2
  34. package/project/.sdk/src/cmp/dart/ReadmeEntity_dart.ts +2 -2
  35. package/project/.sdk/src/cmp/dart/ReadmeHowto_dart.ts +2 -2
  36. package/project/.sdk/src/cmp/dart/ReadmeQuick_dart.ts +2 -2
  37. package/project/.sdk/src/cmp/dart/ReadmeRef_dart.ts +2 -2
  38. package/project/.sdk/src/cmp/dart/ReadmeTopQuick_dart.ts +2 -2
  39. package/project/.sdk/src/cmp/dart/ReadmeTopTest_dart.ts +2 -2
  40. package/project/.sdk/src/cmp/dart/TestEntity_dart.ts +6 -3
  41. package/project/.sdk/src/cmp/elixir/utility_elixir.ts +2 -1
  42. package/project/.sdk/src/cmp/go/ReadmeHowto_go.ts +2 -2
  43. package/project/.sdk/src/cmp/go/ReadmeTopTest_go.ts +2 -2
  44. package/project/.sdk/src/cmp/go/utility_go.ts +10 -1
  45. package/project/.sdk/src/cmp/java/ReadmeEntity_java.ts +2 -2
  46. package/project/.sdk/src/cmp/java/ReadmeHowto_java.ts +2 -2
  47. package/project/.sdk/src/cmp/java/ReadmeQuick_java.ts +2 -2
  48. package/project/.sdk/src/cmp/java/ReadmeRef_java.ts +2 -2
  49. package/project/.sdk/src/cmp/java/ReadmeTopQuick_java.ts +2 -2
  50. package/project/.sdk/src/cmp/java/ReadmeTopTest_java.ts +2 -2
  51. package/project/.sdk/src/cmp/java/TestDirect_java.ts +13 -1
  52. package/project/.sdk/src/cmp/js/utility_js.ts +10 -1
  53. package/project/.sdk/src/cmp/kotlin/ReadmeEntity_kotlin.ts +2 -2
  54. package/project/.sdk/src/cmp/kotlin/ReadmeHowto_kotlin.ts +2 -2
  55. package/project/.sdk/src/cmp/kotlin/ReadmeQuick_kotlin.ts +2 -2
  56. package/project/.sdk/src/cmp/kotlin/ReadmeRef_kotlin.ts +2 -2
  57. package/project/.sdk/src/cmp/kotlin/ReadmeTopQuick_kotlin.ts +2 -2
  58. package/project/.sdk/src/cmp/kotlin/ReadmeTopTest_kotlin.ts +2 -2
  59. package/project/.sdk/src/cmp/kotlin/TestDirect_kotlin.ts +2 -2
  60. package/project/.sdk/src/cmp/kotlin/TestEntity_kotlin.ts +1 -1
  61. package/project/.sdk/src/cmp/lua/ReadmeEntity_lua.ts +2 -2
  62. package/project/.sdk/src/cmp/lua/ReadmeHowto_lua.ts +2 -2
  63. package/project/.sdk/src/cmp/lua/ReadmeQuick_lua.ts +2 -2
  64. package/project/.sdk/src/cmp/lua/ReadmeRef_lua.ts +2 -2
  65. package/project/.sdk/src/cmp/lua/ReadmeTopQuick_lua.ts +2 -2
  66. package/project/.sdk/src/cmp/lua/ReadmeTopTest_lua.ts +2 -2
  67. package/project/.sdk/src/cmp/ocaml/ReadmeEntity_ocaml.ts +2 -2
  68. package/project/.sdk/src/cmp/ocaml/ReadmeHowto_ocaml.ts +2 -2
  69. package/project/.sdk/src/cmp/ocaml/ReadmeQuick_ocaml.ts +2 -2
  70. package/project/.sdk/src/cmp/ocaml/ReadmeRef_ocaml.ts +2 -2
  71. package/project/.sdk/src/cmp/ocaml/ReadmeTopQuick_ocaml.ts +2 -2
  72. package/project/.sdk/src/cmp/ocaml/ReadmeTopTest_ocaml.ts +2 -2
  73. package/project/.sdk/src/cmp/perl/ReadmeEntity_perl.ts +2 -2
  74. package/project/.sdk/src/cmp/perl/ReadmeHowto_perl.ts +2 -2
  75. package/project/.sdk/src/cmp/perl/ReadmeQuick_perl.ts +2 -2
  76. package/project/.sdk/src/cmp/perl/ReadmeRef_perl.ts +2 -2
  77. package/project/.sdk/src/cmp/perl/ReadmeTopQuick_perl.ts +2 -2
  78. package/project/.sdk/src/cmp/perl/ReadmeTopTest_perl.ts +2 -2
  79. package/project/.sdk/src/cmp/perl/TestEntity_perl.ts +6 -1
  80. package/project/.sdk/src/cmp/php/ReadmeEntity_php.ts +2 -2
  81. package/project/.sdk/src/cmp/php/ReadmeHowto_php.ts +2 -2
  82. package/project/.sdk/src/cmp/php/ReadmeQuick_php.ts +2 -2
  83. package/project/.sdk/src/cmp/php/ReadmeRef_php.ts +2 -2
  84. package/project/.sdk/src/cmp/php/ReadmeTopQuick_php.ts +2 -2
  85. package/project/.sdk/src/cmp/php/ReadmeTopTest_php.ts +2 -2
  86. package/project/.sdk/src/cmp/py/ReadmeEntity_py.ts +2 -2
  87. package/project/.sdk/src/cmp/py/ReadmeHowto_py.ts +2 -2
  88. package/project/.sdk/src/cmp/py/ReadmeQuick_py.ts +2 -2
  89. package/project/.sdk/src/cmp/py/ReadmeRef_py.ts +2 -2
  90. package/project/.sdk/src/cmp/py/ReadmeTopQuick_py.ts +2 -2
  91. package/project/.sdk/src/cmp/py/ReadmeTopTest_py.ts +2 -2
  92. package/project/.sdk/src/cmp/rb/ReadmeEntity_rb.ts +2 -2
  93. package/project/.sdk/src/cmp/rb/ReadmeHowto_rb.ts +2 -2
  94. package/project/.sdk/src/cmp/rb/ReadmeQuick_rb.ts +2 -2
  95. package/project/.sdk/src/cmp/rb/ReadmeRef_rb.ts +2 -2
  96. package/project/.sdk/src/cmp/rb/ReadmeTopQuick_rb.ts +2 -2
  97. package/project/.sdk/src/cmp/rb/ReadmeTopTest_rb.ts +2 -2
  98. package/project/.sdk/src/cmp/rust/ReadmeEntity_rust.ts +2 -2
  99. package/project/.sdk/src/cmp/rust/ReadmeHowto_rust.ts +2 -2
  100. package/project/.sdk/src/cmp/rust/ReadmeQuick_rust.ts +2 -2
  101. package/project/.sdk/src/cmp/rust/ReadmeRef_rust.ts +2 -2
  102. package/project/.sdk/src/cmp/rust/ReadmeTopQuick_rust.ts +2 -2
  103. package/project/.sdk/src/cmp/rust/ReadmeTopTest_rust.ts +2 -2
  104. package/project/.sdk/src/cmp/rust/utility_rust.ts +8 -1
  105. package/project/.sdk/src/cmp/scala/ReadmeEntity_scala.ts +2 -2
  106. package/project/.sdk/src/cmp/scala/ReadmeHowto_scala.ts +2 -2
  107. package/project/.sdk/src/cmp/scala/ReadmeQuick_scala.ts +2 -2
  108. package/project/.sdk/src/cmp/scala/ReadmeRef_scala.ts +2 -2
  109. package/project/.sdk/src/cmp/scala/ReadmeTopQuick_scala.ts +2 -2
  110. package/project/.sdk/src/cmp/scala/ReadmeTopTest_scala.ts +2 -2
  111. package/project/.sdk/src/cmp/swift/ReadmeEntity_swift.ts +2 -2
  112. package/project/.sdk/src/cmp/swift/ReadmeHowto_swift.ts +2 -2
  113. package/project/.sdk/src/cmp/swift/ReadmeQuick_swift.ts +2 -2
  114. package/project/.sdk/src/cmp/swift/ReadmeRef_swift.ts +2 -2
  115. package/project/.sdk/src/cmp/swift/ReadmeTopQuick_swift.ts +2 -2
  116. package/project/.sdk/src/cmp/swift/ReadmeTopTest_swift.ts +2 -2
  117. package/project/.sdk/src/cmp/swift/utility_swift.ts +16 -2
  118. package/project/.sdk/src/cmp/ts/utility_ts.ts +10 -1
  119. package/project/.sdk/src/cmp/zig/ReadmeEntity_zig.ts +2 -2
  120. package/project/.sdk/src/cmp/zig/ReadmeHowto_zig.ts +2 -2
  121. package/project/.sdk/src/cmp/zig/ReadmeQuick_zig.ts +2 -2
  122. package/project/.sdk/src/cmp/zig/ReadmeRef_zig.ts +2 -2
  123. package/project/.sdk/src/cmp/zig/ReadmeTopQuick_zig.ts +2 -2
  124. package/project/.sdk/src/cmp/zig/ReadmeTopTest_zig.ts +2 -2
  125. package/project/.sdk/tm/elixir/lib/utility/struct/voxgig_struct.ex +13 -1
  126. package/project/sdkgen-package.json +1 -1
  127. package/src/helpers/canonType.ts +38 -0
  128. package/src/sdkgen.ts +2 -1
@@ -1,5 +1,5 @@
1
1
 
2
- import { cmp, each, Content, canonToType, canonKey, File, isAuthActive, entityIdField, opRequestShape, safeVarName, exampleVarName, matchArg, idLiteral } from '@voxgig/sdkgen'
2
+ import { cmp, each, Content, canonToType, canonKey, canonScalarKey, File, isAuthActive, entityIdField, opRequestShape, safeVarName, exampleVarName, matchArg, idLiteral } from '@voxgig/sdkgen'
3
3
 
4
4
  import {
5
5
  KIT,
@@ -11,7 +11,7 @@ import {
11
11
  // which is not JSON-serialisable when a create body is executed by the doc
12
12
  // test. Strings render the quoted placeholder.
13
13
  function pyLit(type: any, placeholder: string = 'example'): string {
14
- const k = canonKey(type)
14
+ const k = canonScalarKey(type)
15
15
  if ('INTEGER' === k || 'NUMBER' === k) return '1'
16
16
  if ('BOOLEAN' === k) return 'True'
17
17
  if ('ARRAY' === k) return '[]'
@@ -1,5 +1,5 @@
1
1
 
2
- import { cmp, Content, isAuthActive, envName, canonKey, entityIdField, opRequestShape, safeVarName, exampleVarName, matchArg, idLiteral } from '@voxgig/sdkgen'
2
+ import { cmp, Content, isAuthActive, envName, canonKey, canonScalarKey, entityIdField, opRequestShape, safeVarName, exampleVarName, matchArg, idLiteral } from '@voxgig/sdkgen'
3
3
 
4
4
  import {
5
5
  KIT,
@@ -13,7 +13,7 @@ import {
13
13
  // placeholder (the doc test EXECUTES this block, so a comment placeholder
14
14
  // would break it).
15
15
  function pyLit(type: any, placeholder: string = 'example'): string {
16
- const k = canonKey(type)
16
+ const k = canonScalarKey(type)
17
17
  if ('INTEGER' === k || 'NUMBER' === k) return '1'
18
18
  if ('BOOLEAN' === k) return 'True'
19
19
  if ('ARRAY' === k) return '[]'
@@ -1,5 +1,5 @@
1
1
 
2
- import { cmp, Content, canonKey, entityIdField, pickExampleEntity, opRequestShape, safeVarName, exampleVarName } from '@voxgig/sdkgen'
2
+ import { cmp, Content, canonKey, canonScalarKey, entityIdField, pickExampleEntity, opRequestShape, safeVarName, exampleVarName } from '@voxgig/sdkgen'
3
3
 
4
4
  import {
5
5
  KIT,
@@ -10,7 +10,7 @@ import {
10
10
 
11
11
  // A type-correct Python literal for a field's canonical type.
12
12
  function pyLit(type: any): string {
13
- const k = canonKey(type)
13
+ const k = canonScalarKey(type)
14
14
  if ('INTEGER' === k || 'NUMBER' === k) return '1'
15
15
  if ('BOOLEAN' === k) return 'True'
16
16
  if ('ARRAY' === k) return '[]'
@@ -1,5 +1,5 @@
1
1
 
2
- import { cmp, each, Content, canonToType, canonKey, entityIdField, opRequestShape, safeVarName, exampleVarName } from '@voxgig/sdkgen'
2
+ import { cmp, each, Content, canonToType, canonKey, canonScalarKey, entityIdField, opRequestShape, safeVarName, exampleVarName } from '@voxgig/sdkgen'
3
3
 
4
4
  import {
5
5
  KIT,
@@ -11,7 +11,7 @@ import {
11
11
  // is EXECUTED by the doc test, so it must carry a real value per field.
12
12
  // Strings render the quoted placeholder.
13
13
  function rbLit(type: any, placeholder: string = 'example'): string {
14
- const k = canonKey(type)
14
+ const k = canonScalarKey(type)
15
15
  if ('INTEGER' === k || 'NUMBER' === k) return '1'
16
16
  if ('BOOLEAN' === k) return 'true'
17
17
  if ('ARRAY' === k) return '[]'
@@ -1,5 +1,5 @@
1
1
 
2
- import { cmp, Content, isAuthActive, envName, canonKey, entityIdField, pickExampleEntity, opRequestShape, safeVarName, exampleVarName } from '@voxgig/sdkgen'
2
+ import { cmp, Content, isAuthActive, envName, canonKey, canonScalarKey, entityIdField, pickExampleEntity, opRequestShape, safeVarName, exampleVarName } from '@voxgig/sdkgen'
3
3
 
4
4
  import {
5
5
  KIT,
@@ -10,7 +10,7 @@ import {
10
10
 
11
11
  // A type-correct Ruby literal for a field's canonical type.
12
12
  function rbLit(type: any): string {
13
- const k = canonKey(type)
13
+ const k = canonScalarKey(type)
14
14
  if ('INTEGER' === k || 'NUMBER' === k) return '1'
15
15
  if ('BOOLEAN' === k) return 'true'
16
16
  if ('ARRAY' === k) return '[]'
@@ -1,5 +1,5 @@
1
1
 
2
- import { cmp, each, Content, isAuthActive, envName, canonKey, opRequestShape, entityIdField, entityDataIdField, entityOps, safeVarName, exampleVarName } from '@voxgig/sdkgen'
2
+ import { cmp, each, Content, isAuthActive, envName, canonKey, canonScalarKey, opRequestShape, entityIdField, entityDataIdField, entityOps, safeVarName, exampleVarName } from '@voxgig/sdkgen'
3
3
 
4
4
  import {
5
5
  KIT,
@@ -61,7 +61,7 @@ client = ${ctor}
61
61
  // placeholder (the doc test EXECUTES these blocks, so a comment
62
62
  // placeholder would not parse).
63
63
  const rbLit = (type: any, placeholder: string = 'example'): string => {
64
- const k = canonKey(type)
64
+ const k = canonScalarKey(type)
65
65
  if ('INTEGER' === k || 'NUMBER' === k) return '1'
66
66
  if ('BOOLEAN' === k) return 'true'
67
67
  if ('ARRAY' === k) return '[]'
@@ -1,5 +1,5 @@
1
1
 
2
- import { cmp, each, Content, canonToType, canonKey, File, isAuthActive, entityIdField, opRequestShape, safeVarName, exampleVarName } from '@voxgig/sdkgen'
2
+ import { cmp, each, Content, canonToType, canonKey, canonScalarKey, File, isAuthActive, entityIdField, opRequestShape, safeVarName, exampleVarName } from '@voxgig/sdkgen'
3
3
 
4
4
  import {
5
5
  KIT,
@@ -11,7 +11,7 @@ import {
11
11
  // is EXECUTED by the doc test, so it must carry a real value per field.
12
12
  // Strings render the quoted placeholder.
13
13
  function rbLit(type: any, placeholder: string = 'example'): string {
14
- const k = canonKey(type)
14
+ const k = canonScalarKey(type)
15
15
  if ('INTEGER' === k || 'NUMBER' === k) return '1'
16
16
  if ('BOOLEAN' === k) return 'true'
17
17
  if ('ARRAY' === k) return '[]'
@@ -1,5 +1,5 @@
1
1
 
2
- import { cmp, Content, isAuthActive, envName, canonKey, entityIdField, opRequestShape, safeVarName, exampleVarName } from '@voxgig/sdkgen'
2
+ import { cmp, Content, isAuthActive, envName, canonKey, canonScalarKey, entityIdField, opRequestShape, safeVarName, exampleVarName } from '@voxgig/sdkgen'
3
3
 
4
4
  import {
5
5
  KIT,
@@ -13,7 +13,7 @@ import {
13
13
  // placeholder (the doc test EXECUTES this block, so a comment placeholder
14
14
  // would break it).
15
15
  function rbLit(type: any, placeholder: string = 'example'): string {
16
- const k = canonKey(type)
16
+ const k = canonScalarKey(type)
17
17
  if ('INTEGER' === k || 'NUMBER' === k) return '1'
18
18
  if ('BOOLEAN' === k) return 'true'
19
19
  if ('ARRAY' === k) return '[]'
@@ -1,5 +1,5 @@
1
1
 
2
- import { cmp, Content, canonKey, entityIdField, pickExampleEntity, opRequestShape, safeVarName, exampleVarName } from '@voxgig/sdkgen'
2
+ import { cmp, Content, canonKey, canonScalarKey, entityIdField, pickExampleEntity, opRequestShape, safeVarName, exampleVarName } from '@voxgig/sdkgen'
3
3
 
4
4
  import {
5
5
  KIT,
@@ -10,7 +10,7 @@ import {
10
10
 
11
11
  // A type-correct Ruby literal for a field's canonical type.
12
12
  function rbLit(type: any): string {
13
- const k = canonKey(type)
13
+ const k = canonScalarKey(type)
14
14
  if ('INTEGER' === k || 'NUMBER' === k) return '1'
15
15
  if ('BOOLEAN' === k) return 'true'
16
16
  if ('ARRAY' === k) return '[]'
@@ -1,5 +1,5 @@
1
1
 
2
- import { cmp, each, Content, canonToType, canonKey, entityIdField, opRequestShape } from '@voxgig/sdkgen'
2
+ import { cmp, each, Content, canonToType, canonKey, canonScalarKey, entityIdField, opRequestShape } from '@voxgig/sdkgen'
3
3
 
4
4
  import {
5
5
  KIT,
@@ -13,7 +13,7 @@ import { rustVarName } from './utility_rust'
13
13
 
14
14
  // A type-correct rust expression constructing a voxgig struct Value.
15
15
  function rustLit(type: any, placeholder: string = 'example'): string {
16
- const k = canonKey(type)
16
+ const k = canonScalarKey(type)
17
17
  if ('INTEGER' === k || 'NUMBER' === k) return 'Value::Num(1.0)'
18
18
  if ('BOOLEAN' === k) return 'Value::Bool(true)'
19
19
  if ('ARRAY' === k) return 'Value::empty_list()'
@@ -1,5 +1,5 @@
1
1
 
2
- import { cmp, Content, isAuthActive, envName, canonKey, entityIdField, pickExampleEntity, opRequestShape } from '@voxgig/sdkgen'
2
+ import { cmp, Content, isAuthActive, envName, canonKey, canonScalarKey, entityIdField, pickExampleEntity, opRequestShape } from '@voxgig/sdkgen'
3
3
 
4
4
  import {
5
5
  KIT,
@@ -12,7 +12,7 @@ import { crateIdent, rustVarName } from './utility_rust'
12
12
 
13
13
  // A type-correct rust expression constructing a voxgig struct Value.
14
14
  function rustLit(type: any): string {
15
- const k = canonKey(type)
15
+ const k = canonScalarKey(type)
16
16
  if ('INTEGER' === k || 'NUMBER' === k) return 'Value::Num(1.0)'
17
17
  if ('BOOLEAN' === k) return 'Value::Bool(true)'
18
18
  if ('ARRAY' === k) return 'Value::empty_list()'
@@ -1,5 +1,5 @@
1
1
 
2
- import { cmp, Content, isAuthActive, envName, canonKey, opRequestShape, entityIdField, entityDataIdField, entityOps } from '@voxgig/sdkgen'
2
+ import { cmp, Content, isAuthActive, envName, canonKey, canonScalarKey, opRequestShape, entityIdField, entityDataIdField, entityOps } from '@voxgig/sdkgen'
3
3
 
4
4
  import {
5
5
  KIT,
@@ -36,7 +36,7 @@ const ReadmeQuick = cmp(function ReadmeQuick(props: any) {
36
36
 
37
37
  // A type-correct rust expression constructing a voxgig struct Value.
38
38
  const rustLit = (type: any, placeholder: string = 'example'): string => {
39
- const k = canonKey(type)
39
+ const k = canonScalarKey(type)
40
40
  if ('INTEGER' === k || 'NUMBER' === k) return 'Value::Num(1.0)'
41
41
  if ('BOOLEAN' === k) return 'Value::Bool(true)'
42
42
  if ('ARRAY' === k) return 'Value::empty_list()'
@@ -1,5 +1,5 @@
1
1
 
2
- import { cmp, each, Content, canonToType, canonKey, File, isAuthActive, entityIdField, opRequestShape } from '@voxgig/sdkgen'
2
+ import { cmp, each, Content, canonToType, canonKey, canonScalarKey, File, isAuthActive, entityIdField, opRequestShape } from '@voxgig/sdkgen'
3
3
 
4
4
  import {
5
5
  KIT,
@@ -13,7 +13,7 @@ import { crateIdent, rustVarName } from './utility_rust'
13
13
 
14
14
  // A type-correct rust expression constructing a voxgig struct Value.
15
15
  function rustLit(type: any, placeholder: string = 'example'): string {
16
- const k = canonKey(type)
16
+ const k = canonScalarKey(type)
17
17
  if ('INTEGER' === k || 'NUMBER' === k) return 'Value::Num(1.0)'
18
18
  if ('BOOLEAN' === k) return 'Value::Bool(true)'
19
19
  if ('ARRAY' === k) return 'Value::empty_list()'
@@ -1,5 +1,5 @@
1
1
 
2
- import { cmp, Content, isAuthActive, envName, canonKey, entityIdField, opRequestShape } from '@voxgig/sdkgen'
2
+ import { cmp, Content, isAuthActive, envName, canonKey, canonScalarKey, entityIdField, opRequestShape } from '@voxgig/sdkgen'
3
3
 
4
4
  import {
5
5
  KIT,
@@ -14,7 +14,7 @@ import { crateIdent, rustVarName } from './utility_rust'
14
14
  // param. Strings render the quoted placeholder; numeric/boolean/array/object
15
15
  // render a typed literal.
16
16
  function rustLit(type: any, placeholder: string = 'example'): string {
17
- const k = canonKey(type)
17
+ const k = canonScalarKey(type)
18
18
  if ('INTEGER' === k || 'NUMBER' === k) return 'Value::Num(1.0)'
19
19
  if ('BOOLEAN' === k) return 'Value::Bool(true)'
20
20
  if ('ARRAY' === k) return 'Value::empty_list()'
@@ -1,5 +1,5 @@
1
1
 
2
- import { cmp, Content, canonKey, entityIdField, pickExampleEntity, opRequestShape } from '@voxgig/sdkgen'
2
+ import { cmp, Content, canonKey, canonScalarKey, entityIdField, pickExampleEntity, opRequestShape } from '@voxgig/sdkgen'
3
3
 
4
4
  import {
5
5
  KIT,
@@ -13,7 +13,7 @@ import { crateIdent, rustVarName } from './utility_rust'
13
13
  // A type-correct rust expression constructing a voxgig struct Value for a
14
14
  // field's canonical type.
15
15
  function rustLit(type: any): string {
16
- const k = canonKey(type)
16
+ const k = canonScalarKey(type)
17
17
  if ('INTEGER' === k || 'NUMBER' === k) return 'Value::Num(1.0)'
18
18
  if ('BOOLEAN' === k) return 'Value::Bool(true)'
19
19
  if ('ARRAY' === k) return 'Value::empty_list()'
@@ -20,7 +20,14 @@ const RUST_RESERVED = new Set<string>([
20
20
 
21
21
  // A collision-free snake_case rust identifier for a model name.
22
22
  function rustVarName(name: string): string {
23
- const snake = name.replace(/[^a-zA-Z0-9_]/g, '_').toLowerCase()
23
+ let snake = name.replace(/[^a-zA-Z0-9_]/g, '_').toLowerCase()
24
+ // No Rust identifier may begin with a digit. A `3d_id` field became
25
+ // `pub 3_d_id: String`, which does not compile ("expected identifier, found
26
+ // `3_d_id`") and took the whole crate with it. Prefixed with an underscore,
27
+ // the convention cmp/c/utility_c.ts already applies.
28
+ if (/^[0-9]/.test(snake)) {
29
+ snake = '_' + snake
30
+ }
24
31
  return RUST_RESERVED.has(snake) ? snake + '_' : snake
25
32
  }
26
33
 
@@ -1,5 +1,5 @@
1
1
 
2
- import { cmp, each, Content, canonToType, canonKey, entityIdField, opRequestShape } from '@voxgig/sdkgen'
2
+ import { cmp, each, Content, canonToType, canonKey, canonScalarKey, entityIdField, opRequestShape } from '@voxgig/sdkgen'
3
3
 
4
4
  import {
5
5
  KIT,
@@ -13,7 +13,7 @@ import { scalaVarName } from './utility_scala'
13
13
 
14
14
  // A type-correct Scala literal for a field's canonical type.
15
15
  function scalaLit(type: any, placeholder: string = 'example'): string {
16
- const k = canonKey(type)
16
+ const k = canonScalarKey(type)
17
17
  if ('INTEGER' === k) return '1L'
18
18
  if ('NUMBER' === k) return '1.0'
19
19
  if ('BOOLEAN' === k) return 'true'
@@ -1,5 +1,5 @@
1
1
 
2
- import { cmp, Content, isAuthActive, envName, canonKey, entityIdField, pickExampleEntity, opRequestShape } from '@voxgig/sdkgen'
2
+ import { cmp, Content, isAuthActive, envName, canonKey, canonScalarKey, entityIdField, pickExampleEntity, opRequestShape } from '@voxgig/sdkgen'
3
3
 
4
4
  import {
5
5
  KIT,
@@ -11,7 +11,7 @@ import { scalaVarName } from './utility_scala'
11
11
 
12
12
  // A type-correct Scala literal for a field's canonical type.
13
13
  function scalaLit(type: any): string {
14
- const k = canonKey(type)
14
+ const k = canonScalarKey(type)
15
15
  if ('INTEGER' === k) return '1L'
16
16
  if ('NUMBER' === k) return '1.0'
17
17
  if ('BOOLEAN' === k) return 'true'
@@ -1,5 +1,5 @@
1
1
 
2
- import { cmp, Content, isAuthActive, envName, canonKey, opRequestShape, entityIdField, entityOps } from '@voxgig/sdkgen'
2
+ import { cmp, Content, isAuthActive, envName, canonKey, canonScalarKey, opRequestShape, entityIdField, entityOps } from '@voxgig/sdkgen'
3
3
 
4
4
  import {
5
5
  KIT,
@@ -35,7 +35,7 @@ const ReadmeQuick = cmp(function ReadmeQuick(props: any) {
35
35
  // A type-correct Scala literal for a param — the loose object model means
36
36
  // all values live in a java.util.Map[String, Object].
37
37
  const scalaLit = (type: any, placeholder: string = 'example'): string => {
38
- const k = canonKey(type)
38
+ const k = canonScalarKey(type)
39
39
  if ('INTEGER' === k) return '1L'
40
40
  if ('NUMBER' === k) return '1.0'
41
41
  if ('BOOLEAN' === k) return 'true'
@@ -1,5 +1,5 @@
1
1
 
2
- import { cmp, each, Content, canonToType, canonKey, File, isAuthActive, entityIdField, opRequestShape } from '@voxgig/sdkgen'
2
+ import { cmp, each, Content, canonToType, canonKey, canonScalarKey, File, isAuthActive, entityIdField, opRequestShape } from '@voxgig/sdkgen'
3
3
 
4
4
  import {
5
5
  KIT,
@@ -13,7 +13,7 @@ import { scalaVarName } from './utility_scala'
13
13
 
14
14
  // A type-correct Scala literal for a field's canonical type.
15
15
  function scalaLit(type: any, placeholder: string = 'example'): string {
16
- const k = canonKey(type)
16
+ const k = canonScalarKey(type)
17
17
  if ('INTEGER' === k) return '1L'
18
18
  if ('NUMBER' === k) return '1.0'
19
19
  if ('BOOLEAN' === k) return 'true'
@@ -1,5 +1,5 @@
1
1
 
2
- import { cmp, Content, isAuthActive, envName, canonKey, entityIdField, opRequestShape } from '@voxgig/sdkgen'
2
+ import { cmp, Content, isAuthActive, envName, canonKey, canonScalarKey, entityIdField, opRequestShape } from '@voxgig/sdkgen'
3
3
 
4
4
  import {
5
5
  KIT,
@@ -14,7 +14,7 @@ import { scalaVarName, scalaPackage } from './utility_scala'
14
14
  // render a typed literal; strings render the quoted placeholder. The SDK's
15
15
  // loose object model means all values live in java.util.Map[String, Object].
16
16
  function scalaLit(type: any, placeholder: string = 'example'): string {
17
- const k = canonKey(type)
17
+ const k = canonScalarKey(type)
18
18
  if ('INTEGER' === k) return '1L'
19
19
  if ('NUMBER' === k) return '1.0'
20
20
  if ('BOOLEAN' === k) return 'true'
@@ -1,5 +1,5 @@
1
1
 
2
- import { cmp, Content, canonKey, entityIdField, pickExampleEntity, opRequestShape } from '@voxgig/sdkgen'
2
+ import { cmp, Content, canonKey, canonScalarKey, entityIdField, pickExampleEntity, opRequestShape } from '@voxgig/sdkgen'
3
3
 
4
4
  import {
5
5
  KIT,
@@ -11,7 +11,7 @@ import { scalaVarName } from './utility_scala'
11
11
 
12
12
  // A type-correct Scala literal for a field's canonical type.
13
13
  function scalaLit(type: any): string {
14
- const k = canonKey(type)
14
+ const k = canonScalarKey(type)
15
15
  if ('INTEGER' === k) return '1L'
16
16
  if ('NUMBER' === k) return '1.0'
17
17
  if ('BOOLEAN' === k) return 'true'
@@ -1,5 +1,5 @@
1
1
 
2
- import { cmp, each, Content, canonToType, canonKey, entityIdField, opRequestShape } from '@voxgig/sdkgen'
2
+ import { cmp, each, Content, canonToType, canonKey, canonScalarKey, entityIdField, opRequestShape } from '@voxgig/sdkgen'
3
3
 
4
4
  import {
5
5
  KIT,
@@ -13,7 +13,7 @@ import { swiftVarName } from './utility_swift'
13
13
 
14
14
  // A type-correct Swift `Value` literal for a field's canonical type.
15
15
  function swiftLit(type: any, placeholder: string = 'example'): string {
16
- const k = canonKey(type)
16
+ const k = canonScalarKey(type)
17
17
  if ('INTEGER' === k) return '.int(1)'
18
18
  if ('NUMBER' === k) return '.double(1.0)'
19
19
  if ('BOOLEAN' === k) return '.bool(true)'
@@ -1,5 +1,5 @@
1
1
 
2
- import { cmp, Content, isAuthActive, envName, canonKey, entityIdField, pickExampleEntity, opRequestShape } from '@voxgig/sdkgen'
2
+ import { cmp, Content, isAuthActive, envName, canonKey, canonScalarKey, entityIdField, pickExampleEntity, opRequestShape } from '@voxgig/sdkgen'
3
3
 
4
4
  import {
5
5
  KIT,
@@ -11,7 +11,7 @@ import { swiftVarName } from './utility_swift'
11
11
 
12
12
  // A type-correct Swift `Value` literal for a field's canonical type.
13
13
  function swiftLit(type: any): string {
14
- const k = canonKey(type)
14
+ const k = canonScalarKey(type)
15
15
  if ('INTEGER' === k) return '.int(1)'
16
16
  if ('NUMBER' === k) return '.double(1.0)'
17
17
  if ('BOOLEAN' === k) return '.bool(true)'
@@ -1,5 +1,5 @@
1
1
 
2
- import { cmp, Content, isAuthActive, envName, canonKey, opRequestShape, entityIdField, entityOps } from '@voxgig/sdkgen'
2
+ import { cmp, Content, isAuthActive, envName, canonKey, canonScalarKey, opRequestShape, entityIdField, entityOps } from '@voxgig/sdkgen'
3
3
 
4
4
  import {
5
5
  KIT,
@@ -36,7 +36,7 @@ const ReadmeQuick = cmp(function ReadmeQuick(props: any) {
36
36
  // A type-correct Swift `Value` literal for a param — the loose object model
37
37
  // means all values live in a `VMap` of `Value`.
38
38
  const swiftLit = (type: any, placeholder: string = 'example'): string => {
39
- const k = canonKey(type)
39
+ const k = canonScalarKey(type)
40
40
  if ('INTEGER' === k) return '.int(1)'
41
41
  if ('NUMBER' === k) return '.double(1.0)'
42
42
  if ('BOOLEAN' === k) return '.bool(true)'
@@ -1,5 +1,5 @@
1
1
 
2
- import { cmp, each, Content, canonToType, canonKey, File, isAuthActive, entityIdField, opRequestShape } from '@voxgig/sdkgen'
2
+ import { cmp, each, Content, canonToType, canonKey, canonScalarKey, File, isAuthActive, entityIdField, opRequestShape } from '@voxgig/sdkgen'
3
3
 
4
4
  import {
5
5
  KIT,
@@ -13,7 +13,7 @@ import { swiftVarName } from './utility_swift'
13
13
 
14
14
  // A type-correct Swift `Value` literal for a field's canonical type.
15
15
  function swiftLit(type: any, placeholder: string = 'example'): string {
16
- const k = canonKey(type)
16
+ const k = canonScalarKey(type)
17
17
  if ('INTEGER' === k) return '.int(1)'
18
18
  if ('NUMBER' === k) return '.double(1.0)'
19
19
  if ('BOOLEAN' === k) return '.bool(true)'
@@ -1,5 +1,5 @@
1
1
 
2
- import { cmp, Content, isAuthActive, envName, canonKey, entityIdField, opRequestShape } from '@voxgig/sdkgen'
2
+ import { cmp, Content, isAuthActive, envName, canonKey, canonScalarKey, entityIdField, opRequestShape } from '@voxgig/sdkgen'
3
3
 
4
4
  import {
5
5
  KIT,
@@ -14,7 +14,7 @@ import { swiftVarName } from './utility_swift'
14
14
  // object params render a typed literal; strings render the quoted placeholder.
15
15
  // The SDK's loose object model means every value is a `Value` inside a `VMap`.
16
16
  function swiftLit(type: any, placeholder: string = 'example'): string {
17
- const k = canonKey(type)
17
+ const k = canonScalarKey(type)
18
18
  if ('INTEGER' === k) return '.int(1)'
19
19
  if ('NUMBER' === k) return '.double(1.0)'
20
20
  if ('BOOLEAN' === k) return '.bool(true)'
@@ -1,5 +1,5 @@
1
1
 
2
- import { cmp, Content, canonKey, entityIdField, pickExampleEntity, opRequestShape } from '@voxgig/sdkgen'
2
+ import { cmp, Content, canonKey, canonScalarKey, entityIdField, pickExampleEntity, opRequestShape } from '@voxgig/sdkgen'
3
3
 
4
4
  import {
5
5
  KIT,
@@ -11,7 +11,7 @@ import { swiftVarName } from './utility_swift'
11
11
 
12
12
  // A type-correct Swift `Value` literal for a field's canonical type.
13
13
  function swiftLit(type: any): string {
14
- const k = canonKey(type)
14
+ const k = canonScalarKey(type)
15
15
  if ('INTEGER' === k) return '.int(1)'
16
16
  if ('NUMBER' === k) return '.double(1.0)'
17
17
  if ('BOOLEAN' === k) return '.bool(true)'
@@ -22,13 +22,27 @@ function projectPath(suffix?: string): string {
22
22
  function swiftVarName(name: string): string {
23
23
  const pascal = camelify(name)
24
24
  const lower = pascal.charAt(0).toLowerCase() + pascal.slice(1)
25
- return SWIFT_RESERVED.has(lower) ? lower + '_' : lower
25
+ if (SWIFT_RESERVED.has(lower)) {
26
+ return lower + '_'
27
+ }
28
+ return leadingDigitSafe(lower)
29
+ }
30
+
31
+
32
+ // No Swift identifier may begin with a digit, but a model field may: a
33
+ // `3d_id` field camelifies to `3DId`, and `public var 3DId: String` does not
34
+ // merely fail to bind — the compiler reads it as a malformed number and the
35
+ // whole module dies on "'D' is not a valid digit in integer literal", naming
36
+ // nothing that leads back to the field. Prefixed with an underscore, the same
37
+ // convention cmp/c/utility_c.ts already applies.
38
+ function leadingDigitSafe(ident: string): string {
39
+ return /^[0-9]/.test(ident) ? '_' + ident : ident
26
40
  }
27
41
 
28
42
 
29
43
  // A PascalCase Swift identifier for a snake_case model name.
30
44
  function swiftPascalName(name: string): string {
31
- return camelify(name)
45
+ return leadingDigitSafe(camelify(name))
32
46
  }
33
47
 
34
48
 
@@ -4,6 +4,7 @@ import * as Path from 'node:path'
4
4
 
5
5
  import {
6
6
  canonKey,
7
+ canonScalarKey,
7
8
  each,
8
9
  } from '@voxgig/sdkgen'
9
10
 
@@ -49,7 +50,12 @@ function paramCanonType(entity: any, op: any, paramName: string): unknown {
49
50
  // string is not assignable to `any[]` / `Record<string, any>`), everything
50
51
  // else (STRING, unknown, missing) as the quoted `placeholder`.
51
52
  function exampleValue(entity: any, op: any, paramName: string, placeholder: string): string {
52
- const key = canonKey(paramCanonType(entity, op, paramName))
53
+ // canonScalarKey, not canonKey: a nullable field's sentinel is the union
54
+ // ['`$ONE`', ['`$NUMBER`','`$NULL`']], which canonKey stringifies into
55
+ // nothing recognizable — so a `number | null` id fell through to the
56
+ // quoted placeholder and the example failed to compile against the type
57
+ // generated from that very sentinel.
58
+ const key = canonScalarKey(paramCanonType(entity, op, paramName))
53
59
  if ('INTEGER' === key || 'NUMBER' === key) {
54
60
  return '1'
55
61
  }
@@ -62,6 +68,9 @@ function exampleValue(entity: any, op: any, paramName: string, placeholder: stri
62
68
  if ('OBJECT' === key) {
63
69
  return '{}'
64
70
  }
71
+ if ('NULL' === key) {
72
+ return 'null'
73
+ }
65
74
  return `'${placeholder}'`
66
75
  }
67
76
 
@@ -1,5 +1,5 @@
1
1
 
2
- import { cmp, each, Content, canonKey, entityIdField, opRequestShape } from '@voxgig/sdkgen'
2
+ import { cmp, each, Content, canonKey, canonScalarKey, entityIdField, opRequestShape } from '@voxgig/sdkgen'
3
3
 
4
4
  import {
5
5
  KIT,
@@ -26,7 +26,7 @@ function zigType(type: any): string {
26
26
 
27
27
  // A type-correct zig expression constructing a voxgig struct Value.
28
28
  function zigLit(type: any, placeholder: string = 'example'): string {
29
- const k = canonKey(type)
29
+ const k = canonScalarKey(type)
30
30
  if ('INTEGER' === k || 'NUMBER' === k) return 'h.vnum(1)'
31
31
  if ('BOOLEAN' === k) return 'h.vbool(true)'
32
32
  if ('ARRAY' === k) return 'h.olist()'
@@ -1,5 +1,5 @@
1
1
 
2
- import { cmp, Content, isAuthActive, envName, canonKey, entityIdField, pickExampleEntity, opRequestShape } from '@voxgig/sdkgen'
2
+ import { cmp, Content, isAuthActive, envName, canonKey, canonScalarKey, entityIdField, pickExampleEntity, opRequestShape } from '@voxgig/sdkgen'
3
3
 
4
4
  import {
5
5
  KIT,
@@ -12,7 +12,7 @@ import { zigVarName } from './utility_zig'
12
12
 
13
13
  // A type-correct zig expression constructing a voxgig struct Value.
14
14
  function zigLit(type: any): string {
15
- const k = canonKey(type)
15
+ const k = canonScalarKey(type)
16
16
  if ('INTEGER' === k || 'NUMBER' === k) return 'h.vnum(1)'
17
17
  if ('BOOLEAN' === k) return 'h.vbool(true)'
18
18
  if ('ARRAY' === k) return 'h.olist()'
@@ -1,5 +1,5 @@
1
1
 
2
- import { cmp, Content, isAuthActive, envName, canonKey, opRequestShape, entityIdField, entityOps } from '@voxgig/sdkgen'
2
+ import { cmp, Content, isAuthActive, envName, canonKey, canonScalarKey, opRequestShape, entityIdField, entityOps } from '@voxgig/sdkgen'
3
3
 
4
4
  import {
5
5
  KIT,
@@ -35,7 +35,7 @@ const ReadmeQuick = cmp(function ReadmeQuick(props: any) {
35
35
 
36
36
  // A type-correct zig expression constructing a voxgig struct Value.
37
37
  const zigLit = (type: any, placeholder: string = 'example'): string => {
38
- const k = canonKey(type)
38
+ const k = canonScalarKey(type)
39
39
  if ('INTEGER' === k || 'NUMBER' === k) return 'h.vnum(1)'
40
40
  if ('BOOLEAN' === k) return 'h.vbool(true)'
41
41
  if ('ARRAY' === k) return 'h.olist()'
@@ -1,5 +1,5 @@
1
1
 
2
- import { cmp, each, Content, canonKey, File, isAuthActive, entityIdField, opRequestShape } from '@voxgig/sdkgen'
2
+ import { cmp, each, Content, canonKey, canonScalarKey, File, isAuthActive, entityIdField, opRequestShape } from '@voxgig/sdkgen'
3
3
 
4
4
  import {
5
5
  KIT,
@@ -24,7 +24,7 @@ function zigType(type: any): string {
24
24
 
25
25
  // A type-correct zig expression constructing a voxgig struct Value.
26
26
  function zigLit(type: any, placeholder: string = 'example'): string {
27
- const k = canonKey(type)
27
+ const k = canonScalarKey(type)
28
28
  if ('INTEGER' === k || 'NUMBER' === k) return 'h.vnum(1)'
29
29
  if ('BOOLEAN' === k) return 'h.vbool(true)'
30
30
  if ('ARRAY' === k) return 'h.olist()'
@@ -1,5 +1,5 @@
1
1
 
2
- import { cmp, Content, isAuthActive, envName, canonKey, entityIdField, opRequestShape } from '@voxgig/sdkgen'
2
+ import { cmp, Content, isAuthActive, envName, canonKey, canonScalarKey, entityIdField, opRequestShape } from '@voxgig/sdkgen'
3
3
 
4
4
  import {
5
5
  KIT,
@@ -14,7 +14,7 @@ import { zigVarName } from './utility_zig'
14
14
  // param. Strings render the quoted placeholder; numeric/boolean/array/object
15
15
  // render a typed literal.
16
16
  function zigLit(type: any, placeholder: string = 'example'): string {
17
- const k = canonKey(type)
17
+ const k = canonScalarKey(type)
18
18
  if ('INTEGER' === k || 'NUMBER' === k) return 'h.vnum(1)'
19
19
  if ('BOOLEAN' === k) return 'h.vbool(true)'
20
20
  if ('ARRAY' === k) return 'h.olist()'
@@ -1,5 +1,5 @@
1
1
 
2
- import { cmp, Content, canonKey, entityIdField, pickExampleEntity, opRequestShape } from '@voxgig/sdkgen'
2
+ import { cmp, Content, canonKey, canonScalarKey, entityIdField, pickExampleEntity, opRequestShape } from '@voxgig/sdkgen'
3
3
 
4
4
  import {
5
5
  KIT,
@@ -12,7 +12,7 @@ import { zigVarName } from './utility_zig'
12
12
 
13
13
  // A type-correct zig expression constructing a voxgig struct Value.
14
14
  function zigLit(type: any): string {
15
- const k = canonKey(type)
15
+ const k = canonScalarKey(type)
16
16
  if ('INTEGER' === k || 'NUMBER' === k) return 'h.vnum(1)'
17
17
  if ('BOOLEAN' === k) return 'h.vbool(true)'
18
18
  if ('ARRAY' === k) return 'h.olist()'