@voxgig/sdkgen 4.1.0 → 4.2.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/bin/voxgig-sdkgen +1 -1
- package/dist/helpers/canonType.d.ts +2 -1
- package/dist/helpers/canonType.js +36 -0
- package/dist/helpers/canonType.js.map +1 -1
- package/dist/sdkgen.d.ts +2 -2
- package/dist/sdkgen.js +3 -2
- package/dist/sdkgen.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/project/.sdk/src/cmp/c/ReadmeEntity_c.ts +2 -2
- package/project/.sdk/src/cmp/c/ReadmeHowto_c.ts +2 -2
- package/project/.sdk/src/cmp/c/ReadmeQuick_c.ts +2 -2
- package/project/.sdk/src/cmp/c/ReadmeRef_c.ts +2 -2
- package/project/.sdk/src/cmp/c/ReadmeTopQuick_c.ts +2 -2
- package/project/.sdk/src/cmp/c/ReadmeTopTest_c.ts +2 -2
- package/project/.sdk/src/cmp/clojure/ReadmeEntity_clojure.ts +2 -2
- package/project/.sdk/src/cmp/clojure/ReadmeHowto_clojure.ts +2 -2
- package/project/.sdk/src/cmp/clojure/ReadmeQuick_clojure.ts +2 -2
- package/project/.sdk/src/cmp/clojure/ReadmeRef_clojure.ts +2 -2
- package/project/.sdk/src/cmp/clojure/ReadmeTopQuick_clojure.ts +2 -2
- package/project/.sdk/src/cmp/clojure/ReadmeTopTest_clojure.ts +2 -2
- package/project/.sdk/src/cmp/cpp/ReadmeEntity_cpp.ts +2 -2
- package/project/.sdk/src/cmp/cpp/ReadmeHowto_cpp.ts +2 -2
- package/project/.sdk/src/cmp/cpp/ReadmeQuick_cpp.ts +2 -2
- package/project/.sdk/src/cmp/cpp/ReadmeRef_cpp.ts +2 -2
- package/project/.sdk/src/cmp/cpp/ReadmeTopQuick_cpp.ts +2 -2
- package/project/.sdk/src/cmp/cpp/ReadmeTopTest_cpp.ts +2 -2
- package/project/.sdk/src/cmp/csharp/ReadmeEntity_csharp.ts +2 -2
- package/project/.sdk/src/cmp/csharp/ReadmeHowto_csharp.ts +2 -2
- package/project/.sdk/src/cmp/csharp/ReadmeQuick_csharp.ts +2 -2
- package/project/.sdk/src/cmp/csharp/ReadmeRef_csharp.ts +2 -2
- package/project/.sdk/src/cmp/csharp/ReadmeTopQuick_csharp.ts +2 -2
- package/project/.sdk/src/cmp/csharp/ReadmeTopTest_csharp.ts +2 -2
- package/project/.sdk/src/cmp/dart/ReadmeEntity_dart.ts +2 -2
- package/project/.sdk/src/cmp/dart/ReadmeHowto_dart.ts +2 -2
- package/project/.sdk/src/cmp/dart/ReadmeQuick_dart.ts +2 -2
- package/project/.sdk/src/cmp/dart/ReadmeRef_dart.ts +2 -2
- package/project/.sdk/src/cmp/dart/ReadmeTopQuick_dart.ts +2 -2
- package/project/.sdk/src/cmp/dart/ReadmeTopTest_dart.ts +2 -2
- package/project/.sdk/src/cmp/elixir/utility_elixir.ts +2 -1
- package/project/.sdk/src/cmp/go/ReadmeHowto_go.ts +2 -2
- package/project/.sdk/src/cmp/go/ReadmeTopTest_go.ts +2 -2
- package/project/.sdk/src/cmp/go/utility_go.ts +10 -1
- package/project/.sdk/src/cmp/java/ReadmeEntity_java.ts +2 -2
- package/project/.sdk/src/cmp/java/ReadmeHowto_java.ts +2 -2
- package/project/.sdk/src/cmp/java/ReadmeQuick_java.ts +2 -2
- package/project/.sdk/src/cmp/java/ReadmeRef_java.ts +2 -2
- package/project/.sdk/src/cmp/java/ReadmeTopQuick_java.ts +2 -2
- package/project/.sdk/src/cmp/java/ReadmeTopTest_java.ts +2 -2
- package/project/.sdk/src/cmp/js/utility_js.ts +10 -1
- package/project/.sdk/src/cmp/kotlin/ReadmeEntity_kotlin.ts +2 -2
- package/project/.sdk/src/cmp/kotlin/ReadmeHowto_kotlin.ts +2 -2
- package/project/.sdk/src/cmp/kotlin/ReadmeQuick_kotlin.ts +2 -2
- package/project/.sdk/src/cmp/kotlin/ReadmeRef_kotlin.ts +2 -2
- package/project/.sdk/src/cmp/kotlin/ReadmeTopQuick_kotlin.ts +2 -2
- package/project/.sdk/src/cmp/kotlin/ReadmeTopTest_kotlin.ts +2 -2
- package/project/.sdk/src/cmp/lua/ReadmeEntity_lua.ts +2 -2
- package/project/.sdk/src/cmp/lua/ReadmeHowto_lua.ts +2 -2
- package/project/.sdk/src/cmp/lua/ReadmeQuick_lua.ts +2 -2
- package/project/.sdk/src/cmp/lua/ReadmeRef_lua.ts +2 -2
- package/project/.sdk/src/cmp/lua/ReadmeTopQuick_lua.ts +2 -2
- package/project/.sdk/src/cmp/lua/ReadmeTopTest_lua.ts +2 -2
- package/project/.sdk/src/cmp/ocaml/ReadmeEntity_ocaml.ts +2 -2
- package/project/.sdk/src/cmp/ocaml/ReadmeHowto_ocaml.ts +2 -2
- package/project/.sdk/src/cmp/ocaml/ReadmeQuick_ocaml.ts +2 -2
- package/project/.sdk/src/cmp/ocaml/ReadmeRef_ocaml.ts +2 -2
- package/project/.sdk/src/cmp/ocaml/ReadmeTopQuick_ocaml.ts +2 -2
- package/project/.sdk/src/cmp/ocaml/ReadmeTopTest_ocaml.ts +2 -2
- package/project/.sdk/src/cmp/perl/ReadmeEntity_perl.ts +2 -2
- package/project/.sdk/src/cmp/perl/ReadmeHowto_perl.ts +2 -2
- package/project/.sdk/src/cmp/perl/ReadmeQuick_perl.ts +2 -2
- package/project/.sdk/src/cmp/perl/ReadmeRef_perl.ts +2 -2
- package/project/.sdk/src/cmp/perl/ReadmeTopQuick_perl.ts +2 -2
- package/project/.sdk/src/cmp/perl/ReadmeTopTest_perl.ts +2 -2
- package/project/.sdk/src/cmp/php/ReadmeEntity_php.ts +2 -2
- package/project/.sdk/src/cmp/php/ReadmeHowto_php.ts +2 -2
- package/project/.sdk/src/cmp/php/ReadmeQuick_php.ts +2 -2
- package/project/.sdk/src/cmp/php/ReadmeRef_php.ts +2 -2
- package/project/.sdk/src/cmp/php/ReadmeTopQuick_php.ts +2 -2
- package/project/.sdk/src/cmp/php/ReadmeTopTest_php.ts +2 -2
- package/project/.sdk/src/cmp/py/ReadmeEntity_py.ts +2 -2
- package/project/.sdk/src/cmp/py/ReadmeHowto_py.ts +2 -2
- package/project/.sdk/src/cmp/py/ReadmeQuick_py.ts +2 -2
- package/project/.sdk/src/cmp/py/ReadmeRef_py.ts +2 -2
- package/project/.sdk/src/cmp/py/ReadmeTopQuick_py.ts +2 -2
- package/project/.sdk/src/cmp/py/ReadmeTopTest_py.ts +2 -2
- package/project/.sdk/src/cmp/rb/ReadmeEntity_rb.ts +2 -2
- package/project/.sdk/src/cmp/rb/ReadmeHowto_rb.ts +2 -2
- package/project/.sdk/src/cmp/rb/ReadmeQuick_rb.ts +2 -2
- package/project/.sdk/src/cmp/rb/ReadmeRef_rb.ts +2 -2
- package/project/.sdk/src/cmp/rb/ReadmeTopQuick_rb.ts +2 -2
- package/project/.sdk/src/cmp/rb/ReadmeTopTest_rb.ts +2 -2
- package/project/.sdk/src/cmp/rust/ReadmeEntity_rust.ts +2 -2
- package/project/.sdk/src/cmp/rust/ReadmeHowto_rust.ts +2 -2
- package/project/.sdk/src/cmp/rust/ReadmeQuick_rust.ts +2 -2
- package/project/.sdk/src/cmp/rust/ReadmeRef_rust.ts +2 -2
- package/project/.sdk/src/cmp/rust/ReadmeTopQuick_rust.ts +2 -2
- package/project/.sdk/src/cmp/rust/ReadmeTopTest_rust.ts +2 -2
- package/project/.sdk/src/cmp/scala/ReadmeEntity_scala.ts +2 -2
- package/project/.sdk/src/cmp/scala/ReadmeHowto_scala.ts +2 -2
- package/project/.sdk/src/cmp/scala/ReadmeQuick_scala.ts +2 -2
- package/project/.sdk/src/cmp/scala/ReadmeRef_scala.ts +2 -2
- package/project/.sdk/src/cmp/scala/ReadmeTopQuick_scala.ts +2 -2
- package/project/.sdk/src/cmp/scala/ReadmeTopTest_scala.ts +2 -2
- package/project/.sdk/src/cmp/scala/TestDirect_scala.ts +1 -1
- package/project/.sdk/src/cmp/scala/TestEntity_scala.ts +1 -1
- package/project/.sdk/src/cmp/swift/ReadmeEntity_swift.ts +2 -2
- package/project/.sdk/src/cmp/swift/ReadmeHowto_swift.ts +2 -2
- package/project/.sdk/src/cmp/swift/ReadmeQuick_swift.ts +2 -2
- package/project/.sdk/src/cmp/swift/ReadmeRef_swift.ts +2 -2
- package/project/.sdk/src/cmp/swift/ReadmeTopQuick_swift.ts +2 -2
- package/project/.sdk/src/cmp/swift/ReadmeTopTest_swift.ts +2 -2
- package/project/.sdk/src/cmp/ts/utility_ts.ts +10 -1
- package/project/.sdk/src/cmp/zig/ReadmeEntity_zig.ts +2 -2
- package/project/.sdk/src/cmp/zig/ReadmeHowto_zig.ts +2 -2
- package/project/.sdk/src/cmp/zig/ReadmeQuick_zig.ts +2 -2
- package/project/.sdk/src/cmp/zig/ReadmeRef_zig.ts +2 -2
- package/project/.sdk/src/cmp/zig/ReadmeTopQuick_zig.ts +2 -2
- package/project/.sdk/src/cmp/zig/ReadmeTopTest_zig.ts +2 -2
- package/project/.sdk/tm/clojure/src/sdk/features.clj +21 -3
- package/project/.sdk/tm/cpp/Makefile +11 -1
- package/project/.sdk/tm/dart/lib/feature/test/TestFeature.dart +38 -10
- package/project/.sdk/tm/elixir/lib/projectname/feature/test.ex +1 -1
- package/project/.sdk/tm/lean/src/SdkRuntime.lean +19 -1
- package/project/.sdk/tm/lean/src/SdkUtility.lean +2 -2
- package/project/.sdk/tm/ocaml/sdk_features.ml +31 -12
- package/project/.sdk/tm/py-data/test/conftest.py +24 -0
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/TestFeature.swift +10 -10
- package/project/sdkgen-package.json +1 -1
- package/src/helpers/canonType.ts +38 -0
- package/src/sdkgen.ts +2 -1
|
@@ -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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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, 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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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'
|
|
@@ -118,7 +118,7 @@ const TestDirect = cmp(function TestDirect(props: any) {
|
|
|
118
118
|
import java.util.{ArrayList, LinkedHashMap, List => JList, Map => JMap}
|
|
119
119
|
import java.util.function.{BiFunction, Supplier}
|
|
120
120
|
|
|
121
|
-
import ${scalapackage}.core.{Helpers, ${SDK}}
|
|
121
|
+
import ${scalapackage}.core.{Helpers, SdkEntity, ${SDK}}
|
|
122
122
|
|
|
123
123
|
object ${EntityName}DirectTest {
|
|
124
124
|
|
|
@@ -90,7 +90,7 @@ const TestEntity = cmp(function TestEntity(props: any) {
|
|
|
90
90
|
|
|
91
91
|
import java.util.{ArrayList, LinkedHashMap, List => JList, Map => JMap}
|
|
92
92
|
|
|
93
|
-
import ${scalapackage}.core.{Helpers, ${SDK}}
|
|
93
|
+
import ${scalapackage}.core.{Helpers, SdkEntity, ${SDK}}
|
|
94
94
|
import ${scalapackage}.utility.struct.Struct
|
|
95
95
|
|
|
96
96
|
object ${EntityName}EntityTest {
|
|
@@ -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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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)'
|
|
@@ -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
|
-
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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()'
|
|
@@ -104,9 +104,27 @@
|
|
|
104
104
|
val))
|
|
105
105
|
(let [test-fetcher
|
|
106
106
|
(fn [fctx _fullurl _fetchdef]
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
107
|
+
;; THE MOCK HAS TO AGREE WITH THE MODEL. A point carrying
|
|
108
|
+
;; `transform.res: `body.item`` describes an API that answers
|
|
109
|
+
;; {"item": {...}}, and the response transform unwraps that key
|
|
110
|
+
;; on the way back. Returning the bare payload means the
|
|
111
|
+
;; transform unwraps a property that is not there and the caller
|
|
112
|
+
;; gets nothing. Mirrors the go/ts/lua/php mocks. `fctx` is in
|
|
113
|
+
;; scope here, so the point is the one being served.
|
|
114
|
+
(let [envelope (fn [data]
|
|
115
|
+
(let [tm (vs/getprop (core/oget fctx :point) "transform")
|
|
116
|
+
spec (vs/getprop tm "res")]
|
|
117
|
+
;; Exactly `body.<key>`; a deeper path is not an
|
|
118
|
+
;; envelope this mock can synthesise.
|
|
119
|
+
(if (and (some? data) (string? spec))
|
|
120
|
+
(if-let [m (re-matches #"`body\.([^`.]+)`" spec)]
|
|
121
|
+
(vs/jm (second m) data)
|
|
122
|
+
data)
|
|
123
|
+
data)))
|
|
124
|
+
respond (fn [status data extra]
|
|
125
|
+
(let [payload (envelope data)
|
|
126
|
+
out (vs/jm "status" status "statusText" "OK"
|
|
127
|
+
"json" (fn [] payload) "body" "not-used")]
|
|
110
128
|
(when extra (doseq [item (or (vs/items extra) [])]
|
|
111
129
|
(.put ^java.util.Map out (vs/getprop item 0) (vs/getprop item 1))))
|
|
112
130
|
[out nil]))
|
|
@@ -10,6 +10,16 @@ CXXFLAGS ?= -std=c++17 -O0 -g -Wall -Wextra -Wno-unused-parameter -pthread
|
|
|
10
10
|
TEST_SRCS := $(wildcard test/*.cpp)
|
|
11
11
|
TEST_BINS := $(TEST_SRCS:.cpp=.out)
|
|
12
12
|
|
|
13
|
+
# REBUILD WHEN A HEADER CHANGES. The runtime is header-only, so a test binary
|
|
14
|
+
# depends on far more than its own .cpp — but the pattern rule below names
|
|
15
|
+
# only that .cpp, so make happily reused a stale .out after every change to
|
|
16
|
+
# core/, feature/, entity/ or utility/. A real fix to the mock transport read
|
|
17
|
+
# as "still failing" through several rebuilds because the binary under test
|
|
18
|
+
# predated it. Listing the headers is cheap and makes `make test` mean what it
|
|
19
|
+
# says.
|
|
20
|
+
SDK_HDRS := $(wildcard core/*.hpp entity/*.hpp feature/*.hpp \
|
|
21
|
+
utility/*.hpp utility/*/*.hpp *.hpp)
|
|
22
|
+
|
|
13
23
|
.PHONY: test build clean
|
|
14
24
|
|
|
15
25
|
build: $(TEST_BINS)
|
|
@@ -23,7 +33,7 @@ test: build
|
|
|
23
33
|
if [ $$fail -ne 0 ]; then echo "SOME TESTS FAILED"; exit 1; fi; \
|
|
24
34
|
echo "ALL TESTS PASSED"
|
|
25
35
|
|
|
26
|
-
test/%.out: test/%.cpp
|
|
36
|
+
test/%.out: test/%.cpp $(SDK_HDRS)
|
|
27
37
|
$(CXX) $(CXXFLAGS) $< -o $@
|
|
28
38
|
|
|
29
39
|
clean:
|