Module resolution: Should error because of bad import, but TSC builds successfully. TSServer shows error in editor correctly.

Demo Repo
https://github.com/jeffpalmeri/tsc-build-repro
Which of the following problems are you reporting?
The module specifier resolves at build time, but shouldn't because it doesn't at runtime
Demonstrate the defect described above with a code sample.
import { getContactSyncStatus } from "../refreshContactCRM/contactSync.service";

getContactSyncStatus();

Run tsc --showConfig and paste its output here
{
    "compilerOptions": {
        "target": "es2016",
        "module": "commonjs",
        "esModuleInterop": true,
        "forceConsistentCasingInFileNames": true,
        "strict": true,
        "skipLibCheck": true,
        "allowSyntheticDefaultImports": true,
        "noImplicitAny": true,
        "noImplicitThis": true,
        "strictNullChecks": true,
        "strictFunctionTypes": true,
        "strictBindCallApply": true,
        "strictPropertyInitialization": true,
        "alwaysStrict": true,
        "useUnknownInCatchVariables": true
    },
    "files": [
        "./src/lambdas/crms/crmProps/oneTableTrigger/oneTable.ts",
        "./src/lambdas/crms/crmProps/refreshContactCRM/contactSync.service.ts"
    ],
    "include": [
        "src/**/*.ts"
    ]
}

Run tsc --traceResolution and paste its output here
======== Resolving module '../refreshContactCRM/contactSync.service' from '/Users/jpalmeri/Documents/tsbuild-repro/src/lambdas/crms/crmProps/oneTableTrigger/oneTable.ts'. ========
Module resolution kind is not specified, using 'Node10'.
Loading module as file / folder, candidate module location '/Users/jpalmeri/Documents/tsbuild-repro/src/lambdas/crms/crmProps/refreshContactCRM/contactSync.service', target file types: TypeScript, Declaration.
File name '/Users/jpalmeri/Documents/tsbuild-repro/src/lambdas/crms/crmProps/refreshContactCRM/contactSync.service' has a '.service' extension - stripping it.
File '/Users/jpalmeri/Documents/tsbuild-repro/src/lambdas/crms/crmProps/refreshContactCRM/contactSync.d.service.ts' does not exist.
File '/Users/jpalmeri/Documents/tsbuild-repro/src/lambdas/crms/crmProps/refreshContactCRM/contactSync.service.ts' exists - use it as a name resolution result.
======== Module name '../refreshContactCRM/contactSync.service' was successfully resolved to '/Users/jpalmeri/Documents/tsbuild-repro/src/lambdas/crms/crmProps/refreshContactCRM/contactSync.service.ts'. ========
======== Resolving module '@typescript/lib-es2016' from '/Users/jpalmeri/Documents/tsbuild-repro/__lib_node_modules_lookup_lib.es2016.d.ts__.ts'. ========
Explicitly specified module resolution kind: 'Node10'.
Loading module '@typescript/lib-es2016' from 'node_modules' folder, target file types: TypeScript, Declaration.
Searching all ancestor node_modules directories for preferred extensions: TypeScript, Declaration.
Directory '/Users/jpalmeri/Documents/tsbuild-repro/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-es2016'
Directory '/Users/jpalmeri/Documents/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-es2016'
Directory '/Users/jpalmeri/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-es2016'
Directory '/Users/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-es2016'
Directory '/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-es2016'
Loading module '@typescript/lib-es2016' from 'node_modules' folder, target file types: JavaScript.
Searching all ancestor node_modules directories for fallback extensions: JavaScript.
Directory '/Users/jpalmeri/Documents/tsbuild-repro/node_modules' does not exist, skipping all lookups in it.
Directory '/Users/jpalmeri/Documents/node_modules' does not exist, skipping all lookups in it.
Directory '/Users/jpalmeri/node_modules' does not exist, skipping all lookups in it.
Directory '/Users/node_modules' does not exist, skipping all lookups in it.
Directory '/node_modules' does not exist, skipping all lookups in it.
======== Module name '@typescript/lib-es2016' was not resolved. ========
======== Resolving module '@typescript/lib-es2015' from '/Users/jpalmeri/Documents/tsbuild-repro/__lib_node_modules_lookup_lib.es2015.d.ts__.ts'. ========
Explicitly specified module resolution kind: 'Node10'.
Loading module '@typescript/lib-es2015' from 'node_modules' folder, target file types: TypeScript, Declaration.
Searching all ancestor node_modules directories for preferred extensions: TypeScript, Declaration.
Directory '/Users/jpalmeri/Documents/tsbuild-repro/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-es2015'
Directory '/Users/jpalmeri/Documents/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-es2015'
Directory '/Users/jpalmeri/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-es2015'
Directory '/Users/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-es2015'
Directory '/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-es2015'
Loading module '@typescript/lib-es2015' from 'node_modules' folder, target file types: JavaScript.
Searching all ancestor node_modules directories for fallback extensions: JavaScript.
Directory '/Users/jpalmeri/Documents/tsbuild-repro/node_modules' does not exist, skipping all lookups in it.
Directory '/Users/jpalmeri/Documents/node_modules' does not exist, skipping all lookups in it.
Directory '/Users/jpalmeri/node_modules' does not exist, skipping all lookups in it.
Directory '/Users/node_modules' does not exist, skipping all lookups in it.
Directory '/node_modules' does not exist, skipping all lookups in it.
======== Module name '@typescript/lib-es2015' was not resolved. ========
======== Resolving module '@typescript/lib-es5' from '/Users/jpalmeri/Documents/tsbuild-repro/__lib_node_modules_lookup_lib.es5.d.ts__.ts'. ========
Explicitly specified module resolution kind: 'Node10'.
Loading module '@typescript/lib-es5' from 'node_modules' folder, target file types: TypeScript, Declaration.
Searching all ancestor node_modules directories for preferred extensions: TypeScript, Declaration.
Directory '/Users/jpalmeri/Documents/tsbuild-repro/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-es5'
Directory '/Users/jpalmeri/Documents/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-es5'
Directory '/Users/jpalmeri/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-es5'
Directory '/Users/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-es5'
Directory '/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-es5'
Loading module '@typescript/lib-es5' from 'node_modules' folder, target file types: JavaScript.
Searching all ancestor node_modules directories for fallback extensions: JavaScript.
Directory '/Users/jpalmeri/Documents/tsbuild-repro/node_modules' does not exist, skipping all lookups in it.
Directory '/Users/jpalmeri/Documents/node_modules' does not exist, skipping all lookups in it.
Directory '/Users/jpalmeri/node_modules' does not exist, skipping all lookups in it.
Directory '/Users/node_modules' does not exist, skipping all lookups in it.
Directory '/node_modules' does not exist, skipping all lookups in it.
======== Module name '@typescript/lib-es5' was not resolved. ========
======== Resolving module '@typescript/lib-decorators' from '/Users/jpalmeri/Documents/tsbuild-repro/__lib_node_modules_lookup_lib.decorators.d.ts__.ts'. ========
Explicitly specified module resolution kind: 'Node10'.
Loading module '@typescript/lib-decorators' from 'node_modules' folder, target file types: TypeScript, Declaration.
Searching all ancestor node_modules directories for preferred extensions: TypeScript, Declaration.
Directory '/Users/jpalmeri/Documents/tsbuild-repro/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-decorators'
Directory '/Users/jpalmeri/Documents/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-decorators'
Directory '/Users/jpalmeri/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-decorators'
Directory '/Users/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-decorators'
Directory '/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-decorators'
Loading module '@typescript/lib-decorators' from 'node_modules' folder, target file types: JavaScript.
Searching all ancestor node_modules directories for fallback extensions: JavaScript.
Directory '/Users/jpalmeri/Documents/tsbuild-repro/node_modules' does not exist, skipping all lookups in it.
Directory '/Users/jpalmeri/Documents/node_modules' does not exist, skipping all lookups in it.
Directory '/Users/jpalmeri/node_modules' does not exist, skipping all lookups in it.
Directory '/Users/node_modules' does not exist, skipping all lookups in it.
Directory '/node_modules' does not exist, skipping all lookups in it.
======== Module name '@typescript/lib-decorators' was not resolved. ========
======== Resolving module '@typescript/lib-decorators/legacy' from '/Users/jpalmeri/Documents/tsbuild-repro/__lib_node_modules_lookup_lib.decorators.legacy.d.ts__.ts'. ========
Explicitly specified module resolution kind: 'Node10'.
Loading module '@typescript/lib-decorators/legacy' from 'node_modules' folder, target file types: TypeScript, Declaration.
Searching all ancestor node_modules directories for preferred extensions: TypeScript, Declaration.
Directory '/Users/jpalmeri/Documents/tsbuild-repro/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-decorators/legacy'
Directory '/Users/jpalmeri/Documents/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-decorators/legacy'
Directory '/Users/jpalmeri/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-decorators/legacy'
Directory '/Users/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-decorators/legacy'
Directory '/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-decorators/legacy'
Loading module '@typescript/lib-decorators/legacy' from 'node_modules' folder, target file types: JavaScript.
Searching all ancestor node_modules directories for fallback extensions: JavaScript.
Directory '/Users/jpalmeri/Documents/tsbuild-repro/node_modules' does not exist, skipping all lookups in it.
Directory '/Users/jpalmeri/Documents/node_modules' does not exist, skipping all lookups in it.
Directory '/Users/jpalmeri/node_modules' does not exist, skipping all lookups in it.
Directory '/Users/node_modules' does not exist, skipping all lookups in it.
Directory '/node_modules' does not exist, skipping all lookups in it.
======== Module name '@typescript/lib-decorators/legacy' was not resolved. ========
======== Resolving module '@typescript/lib-es2015/core' from '/Users/jpalmeri/Documents/tsbuild-repro/__lib_node_modules_lookup_lib.es2015.core.d.ts__.ts'. ========
Explicitly specified module resolution kind: 'Node10'.
Loading module '@typescript/lib-es2015/core' from 'node_modules' folder, target file types: TypeScript, Declaration.
Searching all ancestor node_modules directories for preferred extensions: TypeScript, Declaration.
Directory '/Users/jpalmeri/Documents/tsbuild-repro/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-es2015/core'
Directory '/Users/jpalmeri/Documents/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-es2015/core'
Directory '/Users/jpalmeri/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-es2015/core'
Directory '/Users/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-es2015/core'
Directory '/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-es2015/core'
Loading module '@typescript/lib-es2015/core' from 'node_modules' folder, target file types: JavaScript.
Searching all ancestor node_modules directories for fallback extensions: JavaScript.
Directory '/Users/jpalmeri/Documents/tsbuild-repro/node_modules' does not exist, skipping all lookups in it.
Directory '/Users/jpalmeri/Documents/node_modules' does not exist, skipping all lookups in it.
Directory '/Users/jpalmeri/node_modules' does not exist, skipping all lookups in it.
Directory '/Users/node_modules' does not exist, skipping all lookups in it.
Directory '/node_modules' does not exist, skipping all lookups in it.
======== Module name '@typescript/lib-es2015/core' was not resolved. ========
======== Resolving module '@typescript/lib-es2015/collection' from '/Users/jpalmeri/Documents/tsbuild-repro/__lib_node_modules_lookup_lib.es2015.collection.d.ts__.ts'. ========
Explicitly specified module resolution kind: 'Node10'.
Loading module '@typescript/lib-es2015/collection' from 'node_modules' folder, target file types: TypeScript, Declaration.
Searching all ancestor node_modules directories for preferred extensions: TypeScript, Declaration.
Directory '/Users/jpalmeri/Documents/tsbuild-repro/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-es2015/collection'
Directory '/Users/jpalmeri/Documents/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-es2015/collection'
Directory '/Users/jpalmeri/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-es2015/collection'
Directory '/Users/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-es2015/collection'
Directory '/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-es2015/collection'
Loading module '@typescript/lib-es2015/collection' from 'node_modules' folder, target file types: JavaScript.
Searching all ancestor node_modules directories for fallback extensions: JavaScript.
Directory '/Users/jpalmeri/Documents/tsbuild-repro/node_modules' does not exist, skipping all lookups in it.
Directory '/Users/jpalmeri/Documents/node_modules' does not exist, skipping all lookups in it.
Directory '/Users/jpalmeri/node_modules' does not exist, skipping all lookups in it.
Directory '/Users/node_modules' does not exist, skipping all lookups in it.
Directory '/node_modules' does not exist, skipping all lookups in it.
======== Module name '@typescript/lib-es2015/collection' was not resolved. ========
======== Resolving module '@typescript/lib-es2015/iterable' from '/Users/jpalmeri/Documents/tsbuild-repro/__lib_node_modules_lookup_lib.es2015.iterable.d.ts__.ts'. ========
Explicitly specified module resolution kind: 'Node10'.
Loading module '@typescript/lib-es2015/iterable' from 'node_modules' folder, target file types: TypeScript, Declaration.
Searching all ancestor node_modules directories for preferred extensions: TypeScript, Declaration.
Directory '/Users/jpalmeri/Documents/tsbuild-repro/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-es2015/iterable'
Directory '/Users/jpalmeri/Documents/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-es2015/iterable'
Directory '/Users/jpalmeri/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-es2015/iterable'
Directory '/Users/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-es2015/iterable'
Directory '/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-es2015/iterable'
Loading module '@typescript/lib-es2015/iterable' from 'node_modules' folder, target file types: JavaScript.
Searching all ancestor node_modules directories for fallback extensions: JavaScript.
Directory '/Users/jpalmeri/Documents/tsbuild-repro/node_modules' does not exist, skipping all lookups in it.
Directory '/Users/jpalmeri/Documents/node_modules' does not exist, skipping all lookups in it.
Directory '/Users/jpalmeri/node_modules' does not exist, skipping all lookups in it.
Directory '/Users/node_modules' does not exist, skipping all lookups in it.
Directory '/node_modules' does not exist, skipping all lookups in it.
======== Module name '@typescript/lib-es2015/iterable' was not resolved. ========
======== Resolving module '@typescript/lib-es2015/symbol' from '/Users/jpalmeri/Documents/tsbuild-repro/__lib_node_modules_lookup_lib.es2015.symbol.d.ts__.ts'. ========
Explicitly specified module resolution kind: 'Node10'.
Loading module '@typescript/lib-es2015/symbol' from 'node_modules' folder, target file types: TypeScript, Declaration.
Searching all ancestor node_modules directories for preferred extensions: TypeScript, Declaration.
Directory '/Users/jpalmeri/Documents/tsbuild-repro/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-es2015/symbol'
Directory '/Users/jpalmeri/Documents/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-es2015/symbol'
Directory '/Users/jpalmeri/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-es2015/symbol'
Directory '/Users/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-es2015/symbol'
Directory '/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-es2015/symbol'
Loading module '@typescript/lib-es2015/symbol' from 'node_modules' folder, target file types: JavaScript.
Searching all ancestor node_modules directories for fallback extensions: JavaScript.
Directory '/Users/jpalmeri/Documents/tsbuild-repro/node_modules' does not exist, skipping all lookups in it.
Directory '/Users/jpalmeri/Documents/node_modules' does not exist, skipping all lookups in it.
Directory '/Users/jpalmeri/node_modules' does not exist, skipping all lookups in it.
Directory '/Users/node_modules' does not exist, skipping all lookups in it.
Directory '/node_modules' does not exist, skipping all lookups in it.
======== Module name '@typescript/lib-es2015/symbol' was not resolved. ========
======== Resolving module '@typescript/lib-es2015/generator' from '/Users/jpalmeri/Documents/tsbuild-repro/__lib_node_modules_lookup_lib.es2015.generator.d.ts__.ts'. ========
Explicitly specified module resolution kind: 'Node10'.
Loading module '@typescript/lib-es2015/generator' from 'node_modules' folder, target file types: TypeScript, Declaration.
Searching all ancestor node_modules directories for preferred extensions: TypeScript, Declaration.
Directory '/Users/jpalmeri/Documents/tsbuild-repro/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-es2015/generator'
Directory '/Users/jpalmeri/Documents/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-es2015/generator'
Directory '/Users/jpalmeri/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-es2015/generator'
Directory '/Users/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-es2015/generator'
Directory '/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-es2015/generator'
Loading module '@typescript/lib-es2015/generator' from 'node_modules' folder, target file types: JavaScript.
Searching all ancestor node_modules directories for fallback extensions: JavaScript.
Directory '/Users/jpalmeri/Documents/tsbuild-repro/node_modules' does not exist, skipping all lookups in it.
Directory '/Users/jpalmeri/Documents/node_modules' does not exist, skipping all lookups in it.
Directory '/Users/jpalmeri/node_modules' does not exist, skipping all lookups in it.
Directory '/Users/node_modules' does not exist, skipping all lookups in it.
Directory '/node_modules' does not exist, skipping all lookups in it.
======== Module name '@typescript/lib-es2015/generator' was not resolved. ========
======== Resolving module '@typescript/lib-es2015/promise' from '/Users/jpalmeri/Documents/tsbuild-repro/__lib_node_modules_lookup_lib.es2015.promise.d.ts__.ts'. ========
Explicitly specified module resolution kind: 'Node10'.
Loading module '@typescript/lib-es2015/promise' from 'node_modules' folder, target file types: TypeScript, Declaration.
Searching all ancestor node_modules directories for preferred extensions: TypeScript, Declaration.
Directory '/Users/jpalmeri/Documents/tsbuild-repro/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-es2015/promise'
Directory '/Users/jpalmeri/Documents/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-es2015/promise'
Directory '/Users/jpalmeri/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-es2015/promise'
Directory '/Users/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-es2015/promise'
Directory '/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-es2015/promise'
Loading module '@typescript/lib-es2015/promise' from 'node_modules' folder, target file types: JavaScript.
Searching all ancestor node_modules directories for fallback extensions: JavaScript.
Directory '/Users/jpalmeri/Documents/tsbuild-repro/node_modules' does not exist, skipping all lookups in it.
Directory '/Users/jpalmeri/Documents/node_modules' does not exist, skipping all lookups in it.
Directory '/Users/jpalmeri/node_modules' does not exist, skipping all lookups in it.
Directory '/Users/node_modules' does not exist, skipping all lookups in it.
Directory '/node_modules' does not exist, skipping all lookups in it.
======== Module name '@typescript/lib-es2015/promise' was not resolved. ========
======== Resolving module '@typescript/lib-es2015/proxy' from '/Users/jpalmeri/Documents/tsbuild-repro/__lib_node_modules_lookup_lib.es2015.proxy.d.ts__.ts'. ========
Explicitly specified module resolution kind: 'Node10'.
Loading module '@typescript/lib-es2015/proxy' from 'node_modules' folder, target file types: TypeScript, Declaration.
Searching all ancestor node_modules directories for preferred extensions: TypeScript, Declaration.
Directory '/Users/jpalmeri/Documents/tsbuild-repro/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-es2015/proxy'
Directory '/Users/jpalmeri/Documents/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-es2015/proxy'
Directory '/Users/jpalmeri/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-es2015/proxy'
Directory '/Users/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-es2015/proxy'
Directory '/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-es2015/proxy'
Loading module '@typescript/lib-es2015/proxy' from 'node_modules' folder, target file types: JavaScript.
Searching all ancestor node_modules directories for fallback extensions: JavaScript.
Directory '/Users/jpalmeri/Documents/tsbuild-repro/node_modules' does not exist, skipping all lookups in it.
Directory '/Users/jpalmeri/Documents/node_modules' does not exist, skipping all lookups in it.
Directory '/Users/jpalmeri/node_modules' does not exist, skipping all lookups in it.
Directory '/Users/node_modules' does not exist, skipping all lookups in it.
Directory '/node_modules' does not exist, skipping all lookups in it.
======== Module name '@typescript/lib-es2015/proxy' was not resolved. ========
======== Resolving module '@typescript/lib-es2015/reflect' from '/Users/jpalmeri/Documents/tsbuild-repro/__lib_node_modules_lookup_lib.es2015.reflect.d.ts__.ts'. ========
Explicitly specified module resolution kind: 'Node10'.
Loading module '@typescript/lib-es2015/reflect' from 'node_modules' folder, target file types: TypeScript, Declaration.
Searching all ancestor node_modules directories for preferred extensions: TypeScript, Declaration.
Directory '/Users/jpalmeri/Documents/tsbuild-repro/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-es2015/reflect'
Directory '/Users/jpalmeri/Documents/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-es2015/reflect'
Directory '/Users/jpalmeri/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-es2015/reflect'
Directory '/Users/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-es2015/reflect'
Directory '/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-es2015/reflect'
Loading module '@typescript/lib-es2015/reflect' from 'node_modules' folder, target file types: JavaScript.
Searching all ancestor node_modules directories for fallback extensions: JavaScript.
Directory '/Users/jpalmeri/Documents/tsbuild-repro/node_modules' does not exist, skipping all lookups in it.
Directory '/Users/jpalmeri/Documents/node_modules' does not exist, skipping all lookups in it.
Directory '/Users/jpalmeri/node_modules' does not exist, skipping all lookups in it.
Directory '/Users/node_modules' does not exist, skipping all lookups in it.
Directory '/node_modules' does not exist, skipping all lookups in it.
======== Module name '@typescript/lib-es2015/reflect' was not resolved. ========
======== Resolving module '@typescript/lib-es2015/symbol-wellknown' from '/Users/jpalmeri/Documents/tsbuild-repro/__lib_node_modules_lookup_lib.es2015.symbol.wellknown.d.ts__.ts'. ========
Explicitly specified module resolution kind: 'Node10'.
Loading module '@typescript/lib-es2015/symbol-wellknown' from 'node_modules' folder, target file types: TypeScript, Declaration.
Searching all ancestor node_modules directories for preferred extensions: TypeScript, Declaration.
Directory '/Users/jpalmeri/Documents/tsbuild-repro/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-es2015/symbol-wellknown'
Directory '/Users/jpalmeri/Documents/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-es2015/symbol-wellknown'
Directory '/Users/jpalmeri/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-es2015/symbol-wellknown'
Directory '/Users/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-es2015/symbol-wellknown'
Directory '/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-es2015/symbol-wellknown'
Loading module '@typescript/lib-es2015/symbol-wellknown' from 'node_modules' folder, target file types: JavaScript.
Searching all ancestor node_modules directories for fallback extensions: JavaScript.
Directory '/Users/jpalmeri/Documents/tsbuild-repro/node_modules' does not exist, skipping all lookups in it.
Directory '/Users/jpalmeri/Documents/node_modules' does not exist, skipping all lookups in it.
Directory '/Users/jpalmeri/node_modules' does not exist, skipping all lookups in it.
Directory '/Users/node_modules' does not exist, skipping all lookups in it.
Directory '/node_modules' does not exist, skipping all lookups in it.
======== Module name '@typescript/lib-es2015/symbol-wellknown' was not resolved. ========
======== Resolving module '@typescript/lib-es2016/array-include' from '/Users/jpalmeri/Documents/tsbuild-repro/__lib_node_modules_lookup_lib.es2016.array.include.d.ts__.ts'. ========
Explicitly specified module resolution kind: 'Node10'.
Loading module '@typescript/lib-es2016/array-include' from 'node_modules' folder, target file types: TypeScript, Declaration.
Searching all ancestor node_modules directories for preferred extensions: TypeScript, Declaration.
Directory '/Users/jpalmeri/Documents/tsbuild-repro/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-es2016/array-include'
Directory '/Users/jpalmeri/Documents/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-es2016/array-include'
Directory '/Users/jpalmeri/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-es2016/array-include'
Directory '/Users/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-es2016/array-include'
Directory '/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-es2016/array-include'
Loading module '@typescript/lib-es2016/array-include' from 'node_modules' folder, target file types: JavaScript.
Searching all ancestor node_modules directories for fallback extensions: JavaScript.
Directory '/Users/jpalmeri/Documents/tsbuild-repro/node_modules' does not exist, skipping all lookups in it.
Directory '/Users/jpalmeri/Documents/node_modules' does not exist, skipping all lookups in it.
Directory '/Users/jpalmeri/node_modules' does not exist, skipping all lookups in it.
Directory '/Users/node_modules' does not exist, skipping all lookups in it.
Directory '/node_modules' does not exist, skipping all lookups in it.
======== Module name '@typescript/lib-es2016/array-include' was not resolved. ========
======== Resolving module '@typescript/lib-es2016/intl' from '/Users/jpalmeri/Documents/tsbuild-repro/__lib_node_modules_lookup_lib.es2016.intl.d.ts__.ts'. ========
Explicitly specified module resolution kind: 'Node10'.
Loading module '@typescript/lib-es2016/intl' from 'node_modules' folder, target file types: TypeScript, Declaration.
Searching all ancestor node_modules directories for preferred extensions: TypeScript, Declaration.
Directory '/Users/jpalmeri/Documents/tsbuild-repro/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-es2016/intl'
Directory '/Users/jpalmeri/Documents/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-es2016/intl'
Directory '/Users/jpalmeri/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-es2016/intl'
Directory '/Users/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-es2016/intl'
Directory '/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-es2016/intl'
Loading module '@typescript/lib-es2016/intl' from 'node_modules' folder, target file types: JavaScript.
Searching all ancestor node_modules directories for fallback extensions: JavaScript.
Directory '/Users/jpalmeri/Documents/tsbuild-repro/node_modules' does not exist, skipping all lookups in it.
Directory '/Users/jpalmeri/Documents/node_modules' does not exist, skipping all lookups in it.
Directory '/Users/jpalmeri/node_modules' does not exist, skipping all lookups in it.
Directory '/Users/node_modules' does not exist, skipping all lookups in it.
Directory '/node_modules' does not exist, skipping all lookups in it.
======== Module name '@typescript/lib-es2016/intl' was not resolved. ========
======== Resolving module '@typescript/lib-dom' from '/Users/jpalmeri/Documents/tsbuild-repro/__lib_node_modules_lookup_lib.dom.d.ts__.ts'. ========
Explicitly specified module resolution kind: 'Node10'.
Loading module '@typescript/lib-dom' from 'node_modules' folder, target file types: TypeScript, Declaration.
Searching all ancestor node_modules directories for preferred extensions: TypeScript, Declaration.
Directory '/Users/jpalmeri/Documents/tsbuild-repro/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-dom'
Directory '/Users/jpalmeri/Documents/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-dom'
Directory '/Users/jpalmeri/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-dom'
Directory '/Users/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-dom'
Directory '/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-dom'
Loading module '@typescript/lib-dom' from 'node_modules' folder, target file types: JavaScript.
Searching all ancestor node_modules directories for fallback extensions: JavaScript.
Directory '/Users/jpalmeri/Documents/tsbuild-repro/node_modules' does not exist, skipping all lookups in it.
Directory '/Users/jpalmeri/Documents/node_modules' does not exist, skipping all lookups in it.
Directory '/Users/jpalmeri/node_modules' does not exist, skipping all lookups in it.
Directory '/Users/node_modules' does not exist, skipping all lookups in it.
Directory '/node_modules' does not exist, skipping all lookups in it.
======== Module name '@typescript/lib-dom' was not resolved. ========
======== Resolving module '@typescript/lib-webworker/importscripts' from '/Users/jpalmeri/Documents/tsbuild-repro/__lib_node_modules_lookup_lib.webworker.importscripts.d.ts__.ts'. ========
Explicitly specified module resolution kind: 'Node10'.
Loading module '@typescript/lib-webworker/importscripts' from 'node_modules' folder, target file types: TypeScript, Declaration.
Searching all ancestor node_modules directories for preferred extensions: TypeScript, Declaration.
Directory '/Users/jpalmeri/Documents/tsbuild-repro/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-webworker/importscripts'
Directory '/Users/jpalmeri/Documents/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-webworker/importscripts'
Directory '/Users/jpalmeri/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-webworker/importscripts'
Directory '/Users/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-webworker/importscripts'
Directory '/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-webworker/importscripts'
Loading module '@typescript/lib-webworker/importscripts' from 'node_modules' folder, target file types: JavaScript.
Searching all ancestor node_modules directories for fallback extensions: JavaScript.
Directory '/Users/jpalmeri/Documents/tsbuild-repro/node_modules' does not exist, skipping all lookups in it.
Directory '/Users/jpalmeri/Documents/node_modules' does not exist, skipping all lookups in it.
Directory '/Users/jpalmeri/node_modules' does not exist, skipping all lookups in it.
Directory '/Users/node_modules' does not exist, skipping all lookups in it.
Directory '/node_modules' does not exist, skipping all lookups in it.
======== Module name '@typescript/lib-webworker/importscripts' was not resolved. ========
======== Resolving module '@typescript/lib-scripthost' from '/Users/jpalmeri/Documents/tsbuild-repro/__lib_node_modules_lookup_lib.scripthost.d.ts__.ts'. ========
Explicitly specified module resolution kind: 'Node10'.
Loading module '@typescript/lib-scripthost' from 'node_modules' folder, target file types: TypeScript, Declaration.
Searching all ancestor node_modules directories for preferred extensions: TypeScript, Declaration.
Directory '/Users/jpalmeri/Documents/tsbuild-repro/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-scripthost'
Directory '/Users/jpalmeri/Documents/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-scripthost'
Directory '/Users/jpalmeri/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-scripthost'
Directory '/Users/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-scripthost'
Directory '/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-scripthost'
Loading module '@typescript/lib-scripthost' from 'node_modules' folder, target file types: JavaScript.
Searching all ancestor node_modules directories for fallback extensions: JavaScript.
Directory '/Users/jpalmeri/Documents/tsbuild-repro/node_modules' does not exist, skipping all lookups in it.
Directory '/Users/jpalmeri/Documents/node_modules' does not exist, skipping all lookups in it.
Directory '/Users/jpalmeri/node_modules' does not exist, skipping all lookups in it.
Directory '/Users/node_modules' does not exist, skipping all lookups in it.
Directory '/node_modules' does not exist, skipping all lookups in it.
======== Module name '@typescript/lib-scripthost' was not resolved. ========
======== Resolving module '@typescript/lib-dom/iterable' from '/Users/jpalmeri/Documents/tsbuild-repro/__lib_node_modules_lookup_lib.dom.iterable.d.ts__.ts'. ========
Explicitly specified module resolution kind: 'Node10'.
Loading module '@typescript/lib-dom/iterable' from 'node_modules' folder, target file types: TypeScript, Declaration.
Searching all ancestor node_modules directories for preferred extensions: TypeScript, Declaration.
Directory '/Users/jpalmeri/Documents/tsbuild-repro/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-dom/iterable'
Directory '/Users/jpalmeri/Documents/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-dom/iterable'
Directory '/Users/jpalmeri/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-dom/iterable'
Directory '/Users/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-dom/iterable'
Directory '/node_modules' does not exist, skipping all lookups in it.
Scoped package detected, looking in 'typescript__lib-dom/iterable'
Loading module '@typescript/lib-dom/iterable' from 'node_modules' folder, target file types: JavaScript.
Searching all ancestor node_modules directories for fallback extensions: JavaScript.
Directory '/Users/jpalmeri/Documents/tsbuild-repro/node_modules' does not exist, skipping all lookups in it.
Directory '/Users/jpalmeri/Documents/node_modules' does not exist, skipping all lookups in it.
Directory '/Users/jpalmeri/node_modules' does not exist, skipping all lookups in it.
Directory '/Users/node_modules' does not exist, skipping all lookups in it.
Directory '/node_modules' does not exist, skipping all lookups in it.
======== Module name '@typescript/lib-dom/iterable' was not resolved. ========

Paste the package.json of the importing module, if it exists
{
  "name": "tsbuild-repro",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "devDependencies": {}
}

Paste the package.json of the target module, if it exists
{
  "name": "tsbuild-repro",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "devDependencies": {}
}

Any other comments can go here
To summarize the issue I'm seeing: TSC is compiling the code successfully without showing any errors, even though there is an import error that TSServer is correctly detecting and showing in the editor diagnostics ("Cannot find module '../refreshContactCRM/contactSync.service' or its corresponding type declarations. [2307]"). There is a symlink in the project that seems to be related to why this issue is occurring.
Actual behavior: TSC runs with no errors and produces a .js file that throws a MODULE_NOT_FOUND error when run.
Expected behavior: TSC throws error when building (that is reflected by the diagnostic TSServer error shows in editor).
TSC version: Version 5.4.3
This is the project tree structure:
├── package-lock.json
├── package.json
├── src
│   └── lambdas
│       ├── crms
│       │   └── crmProps
│       │       ├── oneTableTrigger -> ../../oneTableTrigger     // Note the symlink here
│       │       └── refreshContactCRM
│       │           └── contactSync.service.ts
│       └── oneTableTrigger
│           └── oneTable.ts
└── tsconfig.json

In the file src/lambdas/oneTableTrigger/oneTable.ts, there is a bad import:
import { getContactSyncStatus } from "../refreshContactCRM/contactSync.service";
The path does not lead to any file, and there is a correct diagnostic message shown in the editor telling me such. But running tsc the code compiles with no errors or warnings, producing a js file with this corresponding require:
const contactSync_service_1 = require("../refreshContactCRM/contactSync.service");
Which errors when it is run because of this:
-> node ./src/lambdas/oneTableTrigger/oneTable.js

-> Error: Cannot find module '../refreshContactCRM/contactSync.service'
Require stack:
- /Users/jpalmeri/Documents/tsbuild-repro/src/lambdas/oneTableTrigger/oneTable.js
    at Function.Module._resolveFilename (node:internal/modules/cjs/loader:933:15)
    at Function.Module._load (node:internal/modules/cjs/loader:778:27)
    at Module.require (node:internal/modules/cjs/loader:1005:19)
    at require (node:internal/modules/cjs/helpers:102:18)
    at Object.<anonymous> (/Users/jpalmeri/Documents/tsbuild-repro/src/lambdas/oneTableTrigger/oneTable.js:3:31)
    at Module._compile (node:internal/modules/cjs/loader:1105:14)
    at Object.Module._extensions..js (node:internal/modules/cjs/loader:1159:10)
    at Module.load (node:internal/modules/cjs/loader:981:32)
    at Function.Module._load (node:internal/modules/cjs/loader:822:12)
    at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:77:12) {
  code: 'MODULE_NOT_FOUND',
  requireStack: [
    '/Users/jpalmeri/Documents/tsbuild-repro/src/lambdas/oneTableTrigger/oneTable.js'
  ]
}

I see unexpected module resolution when I inspect the output of tsc --traceResolution that I don't understand, and am thinking that it could be a good clue on the source of the problem. Specifically here:
======== Resolving module '../refreshContactCRM/contactSync.service' from '/Users/jpalmeri/Documents/tsbuild-repro/src/lambdas/crms/crmProps/oneTableTrigger/oneTable.ts'. ========
Module resolution kind is not specified, using 'Node10'.
Loading module as file / folder, candidate module location '/Users/jpalmeri/Documents/tsbuild-repro/src/lambdas/crms/crmProps/refreshContactCRM/contactSync.service', target file types: TypeScript, Declaration.
File name '/Users/jpalmeri/Documents/tsbuild-repro/src/lambdas/crms/crmProps/refreshContactCRM/contactSync.service' has a '.service' extension - stripping it.
File '/Users/jpalmeri/Documents/tsbuild-repro/src/lambdas/crms/crmProps/refreshContactCRM/contactSync.d.service.ts' does not exist.
File '/Users/jpalmeri/Documents/tsbuild-repro/src/lambdas/crms/crmProps/refreshContactCRM/contactSync.service.ts' exists - use it as a name resolution result.
======== Module name '../refreshContactCRM/contactSync.service' was successfully resolved to '/Users/jpalmeri/Documents/tsbuild-repro/src/lambdas/crms/crmProps/refreshContactCRM/contactSync.service.ts'. ========

Specifically on the 3rd line of that traceResolution output:
Loading module as file / folder, candidate module location '/Users/jpalmeri/Documents/tsbuild-repro/src/lambdas/crms/crmProps/refreshContactCRM/contactSync.service', target file types: TypeScript, Declaration.
The candidate module location is a real path, but I don't understand why or how it was picked as a candidate location, and this part seems like an error to me. If you manually follow the path from the import in the importing file, it looks like this:
From src/lambdas/oneTableTrigger/oneTable.ts:
import { getContactSyncStatus } from "../refreshContactCRM/contactSync.service";
What I would expect would be this:
-> src/lambdas/refreshContactCRM/contactSync.service.ts (which is not a real path, no file at this location)
There is something about the symlink being present that is causing this behavior, but it's not something I can explain or understand. It's as if the module resolution process is getting that candidate path from a symlink path, even though the file that is doing the importing is not a symlink, nor importing from a symlink location. It's a just a normal real file doing a normal relative import is what it looks like to me.
If I delete the symlink:
rm ./src/lambdas/crms/crmProps/oneTableTrigger
I get the same exact diagnostic error message in my editor, but running tsc fails with the expected behavior:
src/lambdas/oneTableTrigger/oneTable.ts:1:38 - error TS2307: Cannot find module '../refreshContactCRM/contactSync.service' or its corresponding type declarations.

1 import { getContactSyncStatus } from "../refreshContactCRM/contactSync.service";
                                       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Found 1 error in src/lambdas/oneTableTrigger/oneTable.ts:1

When the symlink is present, it's as if the module resolution is choosing the candidate path just because there is a symlink present, even though the that's not the actual direction of the symlink, it's the reverse. And again, the file doing the importing here is not a symlink (the symlink in the project points to the directory that that the importing file is in), nor is it importing from a symlink. So when I try to follow the logic of the import, even with the presence of this symlink, it does not make sense to me.
Just a couple more notes:
I've tried adding the tsconfig option preserveSymlinks as both true and false, but that causes no difference. The outputs of --traceResolution are exactly the same for both, and exactly the same as not including the option at all (as it is originally in the repo I provided)
If you delete the symlink, you can add it back with this:
ln -s ../../oneTableTrigger ./src/lambdas/crms/crmProps/oneTableTrigger
And my last important thought: The module resolution feels like the bug to me here, but even if it is actually the correct behavior for an explainable reason, then it seems like a bug that there is a mismatch between what TSC produces and TSServer is telling me. The TSServer diagnostic message is showing me the correct error, and reflects the runtime error you receive when trying to run the produced javascript file, but TSC does not reflect that when it builds.

There are two possible names for oneTable.ts (one that goes via the symlink, one which doesn't), which is leading to problems.
Look again at the traceResolution line (I'll break it apart for clarity):
========
Resolving module
'../refreshContactCRM/contactSync.service'
from
'/Users/jpalmeri/Documents/tsbuild-repro/src/lambdas/crms/crmProps/oneTableTrigger/oneTable.ts'.

(etc)

File '/Users/jpalmeri/Documents/tsbuild-repro/src/lambdas/crms/crmProps/refreshContactCRM/contactSync.service.ts' exists - use it as a name resolution result.

The starting path is
/Users/jpalmeri/Documents/tsbuild-repro/src/lambdas/crms/crmProps/oneTableTrigger/oneTable.ts

The target name is
../refreshContactCRM/contactSync.service

So the most-likely place to find it, based on the path math, would be
/Users/jpalmeri/Documents/tsbuild-repro/src/lambdas/crms/crmProps/refreshContactCRM/contactSync.service.ts

Which is exactly what it finds
You basically have two copies of the originating source file - the one from the symlinked path, and the one in the symlink target. Only one of those paths can be the canonical one for how module resolution should treat as the correct one for relative paths, and it's really just whatever path gets hit first, which is why tsc and tsserver see different results.
This is likely in-principle fixable, but this project configuration isn't going to be something that's well-supported because it breaks a lot of fundamental assumptions; TS isn't going to repeatedly re-resolve module imports based on all the possible originating symlink locations. The symlink target should likely be excluded for consistency


[v3.2.0] - including new docker ARN builder

PR Type
MINOR
What kind of change does this PR introduce?

[ ] Bugfix
[x] Feature
[ ] Code style update (formatting)
[ ] Refactoring (no functional changes)
[ ] CI related changes
[ ] Other... Please describe:

What is the current behavior?

Issue Number: N/A
The new version
New release version candidate: v3.2.0

Reviewers, please check if the release candidate is present in the changes of this PR in the examples section!

What is the new behavior?
Now the orb can be used to build ARN docker images.
To use it, on the job ecr-build-and-push include parameters:
- dft/ecr-build-and-push:
    context: [DEFAULT]
    runner: dft/arn
    docker_version: default

Does this PR introduce a breaking change?

[ ] Yes
[x] No

Other information

Your development orb has been published. It will expire in 30 days.
You can preview what this will look like on the CircleCI Orb Registry at the following link:
https://circleci.com/developer/orbs/orb/dafiti-group/orb-standard-pipeline?version=dev:4930e5602fd9c10c10e9380068254a7e54b7bb12

Your orb has been published to the CircleCI Orb Registry.
You can view your published orb on the CircleCI Orb Registry at the following link:
https://circleci.com/developer/orbs/orb/dafiti-group/orb-standard-pipeline?version=3.2.0


JI-5612 — Sort the Paragraphs: Disabled after submit and Start Over — review

revert #47 and setViewState to task on reset

This solves the discovered bugs, but now the "show solution" and "retry" buttons are not switched out for "submit" when resetting outside of the retry button

True. I don't know how to change the PR from Open to Draft 😓 I'll check it anyways, thanks

think it's solved now :c

@Gwenillia @VildeStabell I'll test this now, but could you please share the acceptance criteria of JI-5612, so I can make sure those are followed, too? I don't have access ... :-(

Seems to work as intended now, good job ^^ It's good to go, unless @otacke finds anything

@VildeStabell @otacke
To test the current AC you need an H5P.com account I think 🤔
But you probably can test this :

create a sort the paragraph content with default settings
click on on and click on another to change them (no keyboard, no drag and drop)
leave and resume it
Trigger the resetTask() function (clicking on retry should do it but here we trigger it differently than retry button which may create some differences maybe ?)
again switch 2 pargraphs positions with click only

That rest button on H5P.com uses the resetTask function defined in the Question Type contract. You can use that anywhere using H5P.instances[0].resetTask() in the browser's dev console (where number is the index of the instance in case there's more than one).

Seems to be working nicely, but I am not sure if I understand what the issue was.
Introcucing an extra callback doesn't seem to be necessary at all, is it -  and it will called for every state change, not just for (re)setting to task. One doesn't notice, but when the state is set to the solutions view , the callback will first handle the buttons in the onViewStateChange handler and hide the retry button, just to show it an instance afterwards when checkAnswer is called to rebuild the state.
Without changing the mechanism that is used, couldn't one simply add
this.showButton('check-answer');
this.hideButton('show-solution');
this.hideButton('try-again');

to resetTask? And when that is done, one can remove the same three lines (and       this.trigger('resize');) from the retry button callback that calls resetTask anyway.

Yup added them to resetTask.

Excellent! I only removed triggering a resize from the retry button callback, because that's done in resetTask anyway - old "my bad", not yours.


styles(input): [input] add input types

PR
PR Checklist
Please check if your PR fulfills the following requirements:

[x] The commit message follows our Commit Message Guidelines
[ ] Tests for the changes have been added (for bug fixes / features)
[ ] Docs have been added / updated (for bug fixes / features)

PR Type
What kind of change does this PR introduce?

[ ] Bugfix
[ ] Feature
[ ] Code style update (formatting, local variables)
[x] Refactoring (no functional changes, no api changes)
[ ] Build related changes
[ ] CI related changes
[ ] Documentation content changes
[ ] Other... Please describe:

What is the current behavior?

Issue Number: N/A
What is the new behavior?
Does this PR introduce a breaking change?

[ ] Yes
[x] No

Other information

冲突和检视意见长时间未解决


Blog Text on Mobile breaks next line

Bug report

What is the current behavior?
If the current behavior is a bug, please provide the steps to reproduce.

What is the expected behavior?

Other relevant information:

Node.js version:
NPM/Yarn version
Operating System:
Additional tools:

fixed in cb4c718


Remove unused jenkins1 instance

Jenkins2 feels more recent and stable. RedHat updates this fairy often comparing to 1.6.x line.
There is no sense to maintain both at the moment so going to remove this duplicate.
Quick review @luigizuccarelli @matzew

@wtrocki - LGTM - reviewed - nice and easy


[integration_test] Deprecate, and stop using in this repository

Updates integration_test README to note that the published version is deprecated and direct people to the SDK version.
Updates all plugins here to use the SDK version.

Pre-launch Checklist

[x] I read the Contributor Guide and followed the process outlined there for submitting PRs.
[x] I read the Tree Hygiene wiki page, which explains my responsibilities.
[x] I read and followed the Flutter Style Guide and the C++, Objective-C, Java style guides.
[x] I signed the CLA.
[x] The title of the PR starts with the name of the plugin surrounded by square brackets, e.g. [shared_preferences]
[ ] I listed at least one issue that this PR fixes in the description above.
[x] I updated pubspec.yaml with an appropriate new version according to the pub versioning philosophy.
[x] I updated CHANGELOG.md to add a description of the change.
[ ] I updated/added relevant documentation (doc comments with ///).
[ ] I added new tests to check the change I am making or feature I am adding, or Hixie said the PR is test exempt.
[x] All existing and new tests are passing.

This doesn't update the version and CHANGELOG of all the plugins it touches since I would not expect this to be a change that matters in the published version, thus shouldn't need publishing. If there's a reason we need to publish that I missed, I can update the PR accordingly.

@stuartmorgan just now I noticed a reference to the package/intergration_test package in the .cirrus.yml file. Should this also be updated?

@stuartmorgan just now I noticed a reference to the package/intergration_test package in the .cirrus.yml file. Should this also be updated?

I was going to deal with that one when I actually remove the integration_test code.

I was going to deal with that one when I actually remove the integration_test code.

Alright that means it is on your radar. I just mentioned it to make sure it was not something you overlooked. Good to go if you ask me.

At some point, we need to ask people to unpublish this, maybe? https://pub.dev/packages/integration_test Or mark it as "deprecated"?

Yes, I was going to publish this now to guide people via the README, then eventually (I need to think about how long to wait) mark it as discontinued.

@stuartmorgan I've seen that pub.dev redirects to the flutter API docs for some packages. I'm not sure how that's achieved, but check out this link: http://pub.dev/packages/flutter_test. It'd be nice that integration_test eventually redirected to api.flutter.dev as well!

Oh, that's nice! @jonasfj what's the mechanism for adding a redirect like that?


One sentence edit in README

This project further ... to  Further, this project ...
Grammar edit

If you haven't seen my comment yet, you might be interested in this video:
https://www.youtube.com/watch?v=k8yJCeuP6I8 (how I learned local storage for themes.js)


The current page will be replaced with the .class file.

OS: Windows
Configurations: VScode1.29.1&&JDK1.8.0_191
Reproduce steps:

Open the java file from the package of the source code in the dependency explore.

When I link string, the current page will be replaced with the String.calss

But when I open the one from the project explore.

This is VS Code behavior. To pin the current editor in the editor bar. Simply right-click the editor title and select Keep Open.


Environment file environment.yml update for slideflow version 2

Description
I'm trying to set up my conda for the new slideflow version (v2.1.0). I looked at the provided environment.yml file, but in line #178 it still says slideflow==1.3.2 so I guess the environment file wasn't updated? Could you update it with the lastest environment.yml for v2.1.0? Thank you

Thank you! We've used this environment recently as a base for building a 2.1.0 environment, there are a couple of minor package version updates required. I'll get an updated environment YAML file uploaded today or tomorrow.

Hi is there any update :)

Thanks again for the suggestion! The provided environment has been updated for Slideflow 2.1.1. Let us know if you have issues or concerns with this updated environment, and if so, I will re-open this issue.


When authorize_resource is called before loading the instance, it grants access to unauthorized actions

Steps to reproduce
School belongs_to Admin, School gets Inquiries from students. So an admin should be able to see only the inquiries linked to their school:
# ability.rb

def admin_permissions(current_admin)
    # [...]
    can :manage, Inquiry, school_id: current_admin.school.id
    # [...]
  end

# app/controllers/admins/inquiry_forms_controller.rb
module Admins
  class InquiryFromController < Admins::ApplicationController
    authorize_resource
    before_action :load_inquiry_form, only: [:show, :update]

Please note that InquiryForm is actually one type of Inquiry, defined through single-table inheritance.
Expected behavior
It should not authorize get admins_inquiry_form_path(some_other_schools_inquiry) or, at lest, return one error/exception.
Specifically, the following test should pass:
# test/controllers/admins/auth_inquiry_forms_controller_test.rb
class AuthInquiryFormsControllerTest < ActionDispatch::IntegrationTest
  setup do
    logout(:admins) # from Warden::Test::Helpers
    @admin_school = schools(:my_school)
    @other_school = schools(:another_school)
    @admin = @admin_school.admin
  end

  test 'Admin cannot see inquiry_forms of other admins' do
    sign_in(@admin)
    get admins_inquiry_form_url(id: @other_school.inquiry_forms.last.id)
    assert_response :redirect
  end

  # [...]

  def sign_in(admin, admin_password = 'supersecret')
      post admin_session_url("admin[email]" => admin.email, "admin[password]" => admin_password)
      follow_redirect!
    end

Actual behavior
It authorizes the signed_in admin to access other schools -- hence other admin's -- inquiries!
Specifically, the test above fails because the response is :success (200) instead of a :redirect.
Calling authorize_resource after before_action :load_inquiry_form, only: [:show, :update] makes the test pass.
System configuration
Rails version: <IP_ADDRESS>
Ruby version: 2.5.1p57
CanCanCan version 3.3.0

I think that you call authorize_resource without the Inquiry loaded is not correct.
You can either use load_and_authorize_resource or load the Inquiry before you do the permission check.
Without the resource loaded the authorize_resource will probably check authorize!(:show, Inquiry) or authorize!(:show, InquiryFrom) (I'm not sure) .
If a block or hash of conditions exist they will be ignored when checking on a class, and it will return true. See:
https://github.com/CanCanCommunity/cancancan/blob/develop/docs/Checking-Abilities.md#checking-with-class

I think that you call authorize_resource without the Inquiry loaded is not correct.

I agree! the point is that in case of I mistake as this one CanCanCan should either not authorize by default or at least warn you (for instance by raising an exception). Because the actual behavior is dangerous, if not caught by some test, it can result in a serious privacy policy and/or business model violation (like it was for us, we were lucky that we found this mistake before it was exploited).

Same problem over here. We were performing the authorize_resource after the load, but since we used inheritance in our controllers the authorize was performed on the wrong instance variable. We had something like this:
class VehiclesController < ApplicationController
   load_and_authorize_resource :owner

  before_action :load_vehicle
  authorize_resource

  private

  def load_vehicle
    @vehicle = <magic to load correct vehicle for owner>
  end
end

class CarsController < VehiclesController
  def show
      <special car magic>
      respond_with @vehicle
   end
end

When visiting CarsController#show @vehicle is loaded, but the authorize_resource call in VehiclesController tried to authorize the @car variable which was nil. However this didn't trigger any warning or error whatsoever so we didn't know this was happening. Also due to the load_and_authorize_resource :owner call CanCanCan's check_authorization feature didn't warn us for this.
I think authorize_resource should raise or at least give a warning when trying to authorize a non-existing/nil object. This would have prevented the mistake. I think that also would have prevented @duarme's problem.
Ps. The fix in this case was changing authorize_resource to authorize_resource instance_name: :vehicle.
It might also be wise to have CanCanCan default to authorizing the instance name based on the controller that includes authorize_resource instead of the (lowest sub) controller that is requested. Not sure about that yet though.


Can't Remove kiwi://extensions

Describe the bug
You can Add to Chrome Extensions  in Kiwi Browser 103.0.5060.59 but can't remove from Kiwi Browser.
To Reproduce
Remove any Extensions from kiwi://extensions .
Expected behavior
Work fine in Kiwi Browser 101.0.4951.57
Screenshots

Smartphone :

Device: [ Vivo Y91i (1820) ]
Android Version : [ Android 8.1.0 (Oreo) ]
Kiwi Browser Version [ C103.0.5060.59-Kiwi Stable/Dev/ARM/ARM64 - G2581156208; G2582063817; G2582441223 ]

Additional context
It looks normal in Kiwi Browser 101.0.4951.57 & Geometry OU Kiwi 101- .

Fixed, deployment in progress

Kiwi Browser_G2593424697_C103.0.5060.101 this version is bugy. After update my Kiwi Browser from G2582441223_C103.0.5060.59 to G2593424697_C101.0.5060.101. When go Chrome Web Store (https://chrome.google.com/webstore/) & add any extensions to Kiwi Browser it's restart my Kiwi Browser look like crash my Kiwi Browser. Please Fix! Best Regards for response my comment & quick releases new version of Kiwi. Inteligent & Professional Team Work!🎉 Have a nice day...

me send this report to Geometry OU Developer using kiwi://crashes/ local-urls.


Enabling/disabling input or outputs doesn't make the apply button blue

Enabling/disabling input or outputs doesn't make the apply button blue. But hitting apply is actually required in order to make the changes have effect.

I have changed functionality, and now the state is applied automatically (so you don't need to use the Apply button).
How to update my project?

update your FlowStream app
update designer

BTW: I have added the Pause button to the FlowStream designer, but you will need the latest beta version of Total.js framework $ npm install total4@beta, and after that, the designer will appear the button.


Erroneous "Server URL has a Bad Certificate!"

Hello,
When using the BlueBubbles app on Android using an endpoint that is TLS encrypted using a valid, root CA-signed, wildcard certificate, an error is shown: "Server URL has a bad certificate". I believe this is because it is doing a contains() using the host and comparing it to the certificate's Subject. Since the subject is *.mydomain.com, but the server host is bluebubbles.mydomain.com, the host will never contain the Subject. This is erroneous. The comparison should be like this:
if (Subject.startsWith("*.") && !host.endsWith(Subject.substr(1, Subject.length))
    hasBadCert = true;
else
    hasBadCert = !host.contains(Subject);    // This represents the existing code; TODO: move to endsWith()

In addition to this bugfix, I suggest moving away from using contains() and instead use endsWith() all of the time, otherwise someone could craft a series of subdomains to pass your existing contains() validation. either maliciously or by accident.
Android App Version: 1.12.7 (2061)
Server Version: 1.9.2

What do you think about this implementation?
class BadCertOverride extends HttpOverrides {
  @override
  createHttpClient(SecurityContext? context) {
    return super.createHttpClient(context)
      // If there is a bad certificate callback, override it if the host is part of
      // your server URL
      ..badCertificateCallback = (X509Certificate cert, String host, int port) {
        // Always save that this cert is bad
        hasBadCert = true;

        // Parse the common name from the certificate.
        // Strip www. from the hostnames for easier matching
        String certCommonName = cert.subject.split("CN=")[1].split(",")[0];
        String hostname = host.startsWith('www.') ? host.substring(4) : host;

        // Ensure that the hostname matches the certificate's subject hostname, otherwise return false.
        // Account for wildcards by removing the wildcard and checking if the host ends with the serverUrlHost
        // Pass if:
        //    - host: 1234.customdomain.com, cert: customdomain.com
        //    - host: 1234.customdomain.com, cert: *.customdomain.com
        bool shouldTrust = false;
        if (hostname.endsWith(certCommonName)) {
          shouldTrust = true;
        } else if (certCommonName.startsWith("*.") && hostname.endsWith(certCommonName.substring(2))) {
          shouldTrust = true;
        }

        return shouldTrust;
      };
  }
}

It pulls the certificate's common name from the subject, then first checks if the connected hostname ends with the common name. Or if the common name starts with a wildcard, matching the end of the hostname.
@tneotia any thoughts on this? It will always mark the cert as "bad" so you'll see it in your UI, but it will still connect to it if the cert's common name aligns with the connected hostname.
I think this logic is sound, but I don't want to introduce a security issue ofc

Well we should only mark bad cert if its relevant to the server URL. Because that logic would also fire if say a URL preview has a bad cert, then will erroneously mark the server URL as bad cert instead.

hmm, this gets super tricky imo because if you have a wildcard in your certificate like *.try-cloudflare.com or whatever, that can match on any cloudflare domain. If someone sends a URL preview that is for a different cloudflare domain, it'll "accept" it, which im not sure we want to do... hmmm

hmm, this gets super tricky imo because if you have a wildcard in your certificate like *.try-cloudflare.com or whatever, that can match on any cloudflare domain. If someone sends a URL preview that is for a different cloudflare domain, it'll "accept" it, which im not sure we want to do... hmmm

I guess what it really comes down to is this: is this the ONLY SSL/TLS certificate validation that BlueBubbles AND any of the rest of the underlying framework/dependencies performs? If it's NOT preforming validation of a top-level (root) CA signing, then yes, the Cloudflare problem you posted would apply. If it's not signed by a root CA then why even bother with any SSL/TLS certificate validation? The whole point of X509 certificates is the implicit trust we put in the root CAs.
However, if the underlying framework is ensuring that the chain of trust is signed by a root Certificate Authority, then your proposed problem does not apply because the root CA signers should NOT issue a CN=*.cloudflare.com certificate in the first place. (Except to Cloudflare themselves, of course.)


add support for configurable non-locking sessions

Note:
This is a port of my local implementation (which now differs a little from this repo), so I'll let it sit here for other developers tests and suggestions. I possibly forgot to port something at this late hour.
Short explaination:

basically, if we have a session cookie in the request we open the session file and close it right after reading it with the php-documented read_and_close option.
In the persistSession phase, with the non_locking option "on" the session (file) is closed (see test cases): if the session is regenerated or we didn't have an initial opened session, the session is already (re)generated by previous code, so I added an "elseif" checking for the nonLocking property and if the session data changed, because we do not need to open the session file if there are no changes to write.
I could have left the session status check off (`session_write_close' C code does that itself), but I believe this remind the developers that the session could be not active at that point, if there is no need for it to be so.

TODO

add warnings and caveats (docs) about what can go wrong with non-locking sessions and advice users about when this option could be (more) safely utilized (session file locking was added for a reason!)
translate configuration documentation from php-doc blocks into md docs
test, test, test...
(edited)
i forgot, add public class constants for configuration keys?

I forgot to mention an important aspect. Assume we have 2 scripts started by the same client (read "same session id"), right now the behaviour is the following:
script 1 start
    read-and-close session(state=1)
    alter session(state=2)

    script 2 start
        read-and-close session(state=1) (it can now since is not locked)
        alter session(state=3) data
        persist session(state=3) data
    script 2 end

    reopen session(state=3)
    persist session(state=2) data (state 3 is lost)
script 1 end

Originally I made the last persiste do this:
persist session(state=2) data + session(state=3) data

in php code:
$_SESSION = $session->toArray() + $_SESSION; // this is the data read from the last reading/reopening)

the first script accessing the same session data have precedence when persisting data over other scripts, but other scripts changes MAY be included as well.
But then we may have cases when the first script deletes some keys and then those same keys will find their way back into the persisted data because of the last assignment. So i kept things simple and save only the state from the script point of view. As I said, session locking is there for a reason, and there is no way to handle concurrent changes in a clean way. WIth this implementation we are only sure that the last script that writes the session wins....

@pine3ree
You can also ping me if you need help with the documentation.

Hello @weierophinney , @froschdesign,
would this be ok (as an h3 inside the h2 configuration doc)
Activating non locking sessions
The default behaviour of the php session extension is to lock the session file
until session_write_close is called - usually at the end of script execution -
in order to safely store the session data. This has the side effect of blocking
every other script that request access to the same session file as for instance
in ajax calls in a Single Page Application. The php session extension allows us
to unlock the session file using the extra option read_and_close in session_start.
This option can be activated using the following configuration:
// file: data/session.global.php
return [
    'session' => [
        'persistence' => [
            'ext' => [
                'non_locking' => true, // true|false, true => read_and_close = true
            ],
        ],
    ],
];

As for the php extension, we can use safely use this option only when we are sure
that the session data won't be changed or when only one of the concurrent scripts
may change it. The last script that change and persist the session data will
overwrite any previous change.
I may add a commit for this, or you may use it a a starting point for a "true" english documentation entry.
Do you reckon that we should add constants such as
SessionInterface::CONFIG_KEY = 'session';
SessionPersistentInterface::CONFIG_KEY = 'persistence';
PhpSessionPersistentInterface::CONFIG_KEY = 'ext';

?  It is technically correct, but maybe a little overdone. Maybe we just skip that, what do you think?
(unrelated) PS
pinging @weierophinney, just to avoid to ping you from another repo. I added a proof-of-concept implementation for session that always creates a sid even without any data access, liks session_start does https://github.com/zendframework/zend-expressive-session-ext/issues/23#issuecomment-471360942.

I may add a commit for this, or you may use it a a starting point for a "true" english documentation entry.

Please add a commit for that, and I think we're ready.
Regarding the constants... let's revisit that in a later PR, maybe. :smile:

@weierophinney

Please add a commit for that, and I think we're ready.

Already added here https://github.com/zendframework/zend-expressive-session-ext/pull/43/commits/44a995a7211c8274880db6cedc05a1d84ba0ac04,
kind regards

Thanks, @pine3ree !


webrtc with conan or docker

Hi, webrtc requires complex build process. Original webrtc requires boringssl, while most of open-source projects require openssl (can't use boringssl and openssl at same time, so need to patch and build webrtc from source)
I hope my draft (only for pre-built webrtc) will be helpful to integrate conan-webrtc or Dockerfile support
https://github.com/blockspacer/conan-webrtc/

Hi @blockspacer, thanks for your interest in this project.
in Godot Engine, since version 3.1, we use mbedtls and not openssl (it's much more lightweight and easier to embed).
I do provide pre-built libwebrtc for Linux and Windows (I've been looking to provide OSX build for a while, but I don't have a Mac and didn't have the time to find an alternative solution yet). See this repo.
I never heard of conan before (can you provide some context or reference? I couldn't find much googling around).
Among other things, we have been investigating an alternative to libwebrtc that we could include directly in the godot build system (see #12) and rawrtc seems the best candidate so far (though I haven't seen much activity lately).

@Faless
conan is awesome C++ Open Source Package Manager https://conan.io/
it can be used with scons, makefiles, pre-built binaries, CMake like so https://jfreeman.dev/blog/2019/05/22/trying-conan-with-modern-cmake:-dependencies/
If Godot used conan + scons, then it would be easier to integrate Godot modules with apps (especially important if you want to create server with custom netcode and main loop, but integrate some Godot modules, like physics).
scons is not popular and it is big downside of Godot. conan can solve a lot of problems.
i created separate issue about Godot + scons + conan https://github.com/godotengine/godot/issues/37180
Note that alternatives to libwebrtc from google may be not stable (protocol changes by browser vendors), buggy, have bad performance (libwebrtc from google supports multi-threading and it is really important). I hope that chosen solution will be production ready and have active community (libwebrtc from google is production ready).

Well, if it's a package manager then I guess people can use it to package godot or this plugin.
I don't really see why it should be supported upstream.
Simply make the package like distros do for godot (debian, fedora, etc).
Am I missing something?

@Faless

people can use it to package godot or this plugin.

yes, anyone can wrap into conan packages existing Godot scons scripts, webrtc binaries e.t.c. But it may be not trivial to keep conan packages up-do-date without help of original repo maintainers, especially as solo contributor
BTW conan can solve a lot of problems, for example - plugin management, integration with existing open-source or closed-source software, CI/CD pipeline e.t.c.
see (plugin management Godot issue): https://github.com/godotengine/godot-proposals/issues/607

yes, anyone can wrap into conan packages existing Godot scons scripts, webrtc binaries e.t.c. But it may be not trivial to keep conan packages up-do-date without help of original repo maintainers, especially as solo contributor

Well, but then you are asking us to do the work that the conan community should do.
I don't really see any advantage in using this specific technology honestly.

see (plugin management Godot issue):

That is mostly about GDScript plugins, not sure how this software would help in any way

@Faless

I don't really see any advantage in using this specific technology honestly.

to

not create your own dependency-management solution and use existing (free, opensource, popular and stable)
allow to use Godot modules in other projects (that don't use scons, for example). Currently engine forces game-server developers to run whole Godot engine (just disabling graphics is not enough), even if you don't need to run GDscript on game-server.

Please look at talk about managing deps in complex projects and why scons/make/CMake is not enough https://www.youtube.com/watch?v=S4QSKLXdTtA

That is mostly about GDScript plugins, not sure how this software would help in any way

conan allows to manage deps not only for C++. For example, GDScript plugin may be packed into archive during conan create command. In game-project-dir conanfile stores deps of created package and can unpack created plugin during conan install command with auto-resolving deps (no recursive deps problem).
Again, idea is simple: game project lists required plugins in custom conanfile. during conan install all required plugin files must be unpacked at some destination folder. Engine is able to detect plugin folders (for example by file watcher or re-import button, as done with assets) and auto-install plugins.

2\. allow to use Godot modules in other projects (that don't use scons, for example). Currently engine forces game-server developers to run whole Godot engine (just disabling graphics is not enough), even if you don't need to run GDscript on game-server.

as others explained. this is not possible, since modules depends on the rest of godot code.

Again, idea is simple: game project lists required plugins in custom conanfile. during conan install all required plugin files must be unpacked at some destination folder. Engine is able to detect plugin folders (for example by file watcher or re-import button, as done with assets) and auto-install plugins.

Wouldn't we need to ship conan with godot? Would it work on all platforms (e.g. Android/iOS/HTML5)?

Let's continue the discussion in the proposal repository I guess.

@Faless
BTW

this is not possible, since modules depends on the rest of godot code.

It is fine to run not only physics module with custom game server. I think that main problem here is that Godot provides no way to customize main application loop.
Suppose you are switching to Godot from other engine and you already created some server-side netcode (C++). If you could link with Godot as library and run only desired engine systems in main loop (no need to run renderer.Update() on server, but need to run physics.Update() e.t.c.), than that engine-switching process will be a lot easier.

Suppose you are switching to Godot from other engine and you already created some server-side netcode (C++). If you could link with Godot as library and run only desired engine systems in main loop (no need to run renderer.Update() on server, but need to run physics.Update() e.t.c.), than that engine-switching process will be a lot easier.

There is already a server version of godot which does not do the rendering part

@Faless

There is already a server version of godot which does not do the rendering part

One way to fix that problem is to modify Godot server version code. But there is no way to create custom server (completely separated from Godot repo) that links with Godot as library and uses custom main loop.


use mustache to wire up params, creds, outputs

This PR changes how we wire params, credentials and outputs between steps. Instead of the previous "source:" bundle.x.y.z, now we use Mustache templates.

[x] Introduce
[x] Update docs
[x] Fix e2e tests

Closes #161

@carolynvs @vdice take a look.
The only thing I'm kind of bummed about in this is that the mustache templates need to be quoted, otherwise the go marshalling isn't happy. Maybe we need to change how the marshalling works and only marshall the steps after they've been fully resolved? This seems like a big enough change to review on it's own though, tackle that in another refactor.

I'm not sure I see how to resolve before we've parsed the file, but you are closer than I am to it for sure. Yeah let's go with this for now and iterate.

I'm not sure I see how to resolve before we've parsed the file, but you are closer than I am to it for sure. Yeah let's go with this for now and iterate.

I was thinking more that we wouldn't fully try and rehydrate a struct with the yaml marsheller, but I don't know if that's possible. just thinking out loud

Merge at will


Added follow/unfollow feature

Implemented a follow system

Fix merge conflicts by pulling from main repo before making this changes. So I suggest you keep a backup of these files.


Facing CVE-2024-3094 in Python 3.11.9-alpine3.19 Docker Image

We've identified a vulnerability within our Docker image that poses a security risk.CVE-2024-3094has been detected.
About CVE-2024-3094-
Malicious code was discovered in the upstream tarballs of xz, starting with version 5.6.0. Through a series of complex obfuscations, the liblzma build process extracts a prebuilt object file from a disguised test file existing in the source code, which is then used to modify specific functions in the liblzma code. This results in a modified liblzma library that can be used by any software linked against this library, intercepting and modifying the data interaction with this library.
Could you please provide an estimated timeline for fixing this issue? Additionally, any guidance on how to address this vulnerability effectively would be highly appreciated.? We would like to ensure that our system remains secure and up-to-date.
Thank you.

The version of xz in this version is not affected by this CVE. As per https://www.cve.org/CVERecord?id=CVE-2024-3094 the version affected starts at 5.6.0 and as per https://hub.docker.com/layers/library/python/3.11.9-alpine3.19/images/sha256-3912f7fe31112ee0f747848328e1a2b225a3aad18d0800bac6e13042642fd202?context=explore the version in the image is 5.4.5


无DeviceDisplay.ScreenMetrics属性

@Kim99 commented on Tue Dec 11 2018
Xamarin.Essentials1.0版没有DeviceDisplay.ScreenMetrics了

文档详细信息
⚠ 请勿编辑此部分。 docs.microsoft.com ➟ GitHub 问题链接必须具有此部分。

ID: baaf5be9-c6c2-5c43-c131-6cb01cda6502
Version Independent ID: 7020d1c9-9b6b-18af-72b9-3e75c0c26340
Content: Xamarin.Essentials：设备显示信息 - Xamarin
Content Source: docs/essentials/device-display.md
Product: xamarin
GitHub Login: @jamesmontemagno
Microsoft Alias: jamont

Hi team,
I'm moving this here since the user seems to be reporting a non-accurate information

(title) No DeviceDisplay.ScreenMetrics property
(comment)Xamarin.Essentials version 1.0 does not have DeviceDisplay.ScreenMetrics

During the preview, there was a property namedDeviceDisplay.ScreenMetrics.
In the 1.0 release, this has been replaced by DeviceDisplay.MainDisplayInfo .
This error may have been reported during the translation delay, after the 1.0 release occurred.