add another try
This commit is contained in:
parent
94a0737555
commit
ab7fc4450e
@ -4,7 +4,7 @@
|
||||
description: 'A hopeful final typescipt-pragmatic mathjs proof-of-concept',
|
||||
main: 'index.ts',
|
||||
scripts: {
|
||||
'build-and-run': 'ttsc -b && echo {"type":"module"} > build/package.json && node build/index.js',
|
||||
'go': 'ttsc && echo {"type":"module"} > build/package.json && node build/index.js',
|
||||
},
|
||||
keywords: [
|
||||
'math',
|
||||
|
@ -1,113 +1,119 @@
|
||||
lockfileVersion: 5.4
|
||||
lockfileVersion: '6.0'
|
||||
|
||||
specifiers:
|
||||
'@types/node': 20.5.7
|
||||
ts-node: 10.9.1
|
||||
ttypescript: 1.5.15
|
||||
typescript: 4.7.4
|
||||
settings:
|
||||
autoInstallPeers: true
|
||||
excludeLinksFromLockfile: false
|
||||
|
||||
dependencies:
|
||||
'@types/node': 20.5.7
|
||||
'@types/node':
|
||||
specifier: 20.5.7
|
||||
version: 20.5.7
|
||||
|
||||
devDependencies:
|
||||
ts-node: 10.9.1_l7whiu4appksmcywzzf5ucsgha
|
||||
ttypescript: 1.5.15_6oasmw356qmm23djlsjgkwvrtm
|
||||
typescript: 4.7.4
|
||||
ts-node:
|
||||
specifier: 10.9.1
|
||||
version: 10.9.1(@types/node@20.5.7)(typescript@4.7.4)
|
||||
ttypescript:
|
||||
specifier: 1.5.15
|
||||
version: 1.5.15(ts-node@10.9.1)(typescript@4.7.4)
|
||||
typescript:
|
||||
specifier: 4.7.4
|
||||
version: 4.7.4
|
||||
|
||||
packages:
|
||||
|
||||
/@cspotcode/source-map-support/0.8.1:
|
||||
/@cspotcode/source-map-support@0.8.1:
|
||||
resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==}
|
||||
engines: {node: '>=12'}
|
||||
dependencies:
|
||||
'@jridgewell/trace-mapping': 0.3.9
|
||||
dev: true
|
||||
|
||||
/@jridgewell/resolve-uri/3.1.1:
|
||||
/@jridgewell/resolve-uri@3.1.1:
|
||||
resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==}
|
||||
engines: {node: '>=6.0.0'}
|
||||
dev: true
|
||||
|
||||
/@jridgewell/sourcemap-codec/1.4.15:
|
||||
/@jridgewell/sourcemap-codec@1.4.15:
|
||||
resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==}
|
||||
dev: true
|
||||
|
||||
/@jridgewell/trace-mapping/0.3.9:
|
||||
/@jridgewell/trace-mapping@0.3.9:
|
||||
resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==}
|
||||
dependencies:
|
||||
'@jridgewell/resolve-uri': 3.1.1
|
||||
'@jridgewell/sourcemap-codec': 1.4.15
|
||||
dev: true
|
||||
|
||||
/@tsconfig/node10/1.0.9:
|
||||
/@tsconfig/node10@1.0.9:
|
||||
resolution: {integrity: sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==}
|
||||
dev: true
|
||||
|
||||
/@tsconfig/node12/1.0.11:
|
||||
/@tsconfig/node12@1.0.11:
|
||||
resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==}
|
||||
dev: true
|
||||
|
||||
/@tsconfig/node14/1.0.3:
|
||||
/@tsconfig/node14@1.0.3:
|
||||
resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==}
|
||||
dev: true
|
||||
|
||||
/@tsconfig/node16/1.0.4:
|
||||
/@tsconfig/node16@1.0.4:
|
||||
resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==}
|
||||
dev: true
|
||||
|
||||
/@types/node/20.5.7:
|
||||
/@types/node@20.5.7:
|
||||
resolution: {integrity: sha512-dP7f3LdZIysZnmvP3ANJYTSwg+wLLl8p7RqniVlV7j+oXSXAbt9h0WIBFmJy5inWZoX9wZN6eXx+YXd9Rh3RBA==}
|
||||
|
||||
/acorn-walk/8.2.0:
|
||||
/acorn-walk@8.2.0:
|
||||
resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==}
|
||||
engines: {node: '>=0.4.0'}
|
||||
dev: true
|
||||
|
||||
/acorn/8.10.0:
|
||||
/acorn@8.10.0:
|
||||
resolution: {integrity: sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==}
|
||||
engines: {node: '>=0.4.0'}
|
||||
hasBin: true
|
||||
dev: true
|
||||
|
||||
/arg/4.1.3:
|
||||
/arg@4.1.3:
|
||||
resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==}
|
||||
dev: true
|
||||
|
||||
/create-require/1.1.1:
|
||||
/create-require@1.1.1:
|
||||
resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==}
|
||||
dev: true
|
||||
|
||||
/diff/4.0.2:
|
||||
/diff@4.0.2:
|
||||
resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==}
|
||||
engines: {node: '>=0.3.1'}
|
||||
dev: true
|
||||
|
||||
/function-bind/1.1.1:
|
||||
/function-bind@1.1.1:
|
||||
resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==}
|
||||
dev: true
|
||||
|
||||
/has/1.0.3:
|
||||
/has@1.0.3:
|
||||
resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==}
|
||||
engines: {node: '>= 0.4.0'}
|
||||
dependencies:
|
||||
function-bind: 1.1.1
|
||||
dev: true
|
||||
|
||||
/is-core-module/2.13.0:
|
||||
/is-core-module@2.13.0:
|
||||
resolution: {integrity: sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==}
|
||||
dependencies:
|
||||
has: 1.0.3
|
||||
dev: true
|
||||
|
||||
/make-error/1.3.6:
|
||||
/make-error@1.3.6:
|
||||
resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==}
|
||||
dev: true
|
||||
|
||||
/path-parse/1.0.7:
|
||||
/path-parse@1.0.7:
|
||||
resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
|
||||
dev: true
|
||||
|
||||
/resolve/1.22.4:
|
||||
/resolve@1.22.4:
|
||||
resolution: {integrity: sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg==}
|
||||
hasBin: true
|
||||
dependencies:
|
||||
@ -116,12 +122,12 @@ packages:
|
||||
supports-preserve-symlinks-flag: 1.0.0
|
||||
dev: true
|
||||
|
||||
/supports-preserve-symlinks-flag/1.0.0:
|
||||
/supports-preserve-symlinks-flag@1.0.0:
|
||||
resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
|
||||
engines: {node: '>= 0.4'}
|
||||
dev: true
|
||||
|
||||
/ts-node/10.9.1_l7whiu4appksmcywzzf5ucsgha:
|
||||
/ts-node@10.9.1(@types/node@20.5.7)(typescript@4.7.4):
|
||||
resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==}
|
||||
hasBin: true
|
||||
peerDependencies:
|
||||
@ -152,7 +158,7 @@ packages:
|
||||
yn: 3.1.1
|
||||
dev: true
|
||||
|
||||
/ttypescript/1.5.15_6oasmw356qmm23djlsjgkwvrtm:
|
||||
/ttypescript@1.5.15(ts-node@10.9.1)(typescript@4.7.4):
|
||||
resolution: {integrity: sha512-48ykDNHzFnPMnv4hYX1P8Q84TvCZyL1QlFxeuxsuZ48X2+ameBgPenvmCkHJtoOSxpoWTWi8NcgNrRnVDOmfSg==}
|
||||
hasBin: true
|
||||
peerDependencies:
|
||||
@ -160,21 +166,21 @@ packages:
|
||||
typescript: '>=3.2.2'
|
||||
dependencies:
|
||||
resolve: 1.22.4
|
||||
ts-node: 10.9.1_l7whiu4appksmcywzzf5ucsgha
|
||||
ts-node: 10.9.1(@types/node@20.5.7)(typescript@4.7.4)
|
||||
typescript: 4.7.4
|
||||
dev: true
|
||||
|
||||
/typescript/4.7.4:
|
||||
/typescript@4.7.4:
|
||||
resolution: {integrity: sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==}
|
||||
engines: {node: '>=4.2.0'}
|
||||
hasBin: true
|
||||
dev: true
|
||||
|
||||
/v8-compile-cache-lib/3.0.1:
|
||||
/v8-compile-cache-lib@3.0.1:
|
||||
resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==}
|
||||
dev: true
|
||||
|
||||
/yn/3.1.1:
|
||||
/yn@3.1.1:
|
||||
resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==}
|
||||
engines: {node: '>=6'}
|
||||
dev: true
|
||||
|
@ -35,7 +35,7 @@ const transformer: ts.TransformerFactory<ts.SourceFile> = context => {
|
||||
// WIP
|
||||
// @ts-ignore
|
||||
const type = checker.getTypeAtLocation(paramNode)
|
||||
const paramType = checker.typeToString(type, paramNode, ts.TypeFormatFlags.InTypeAlias)
|
||||
const paramType = checker.typeToString(type, undefined, ts.TypeFormatFlags.InTypeAlias)
|
||||
// const paramType = checker.typeToString(type)
|
||||
// TDOO: get checker.getTypeOfSymbolAtLocation(symbol, symbol.valueDeclaration)
|
||||
console.log('PLUGIN: PARAM TYPE STRING', paramType)
|
||||
@ -60,10 +60,10 @@ const transformer: ts.TransformerFactory<ts.SourceFile> = context => {
|
||||
// }
|
||||
|
||||
// WIP
|
||||
const type0 = resolveTypeArgumentOfCall(checker, node, 0)
|
||||
// @ts-ignore
|
||||
const typeStr = checker.typeToString(type0);
|
||||
console.log('PLUGIN: RESOLVED TYPE ARGUMENT', typeStr)
|
||||
const type1 = checker.getTypeAtLocation(paramNode)
|
||||
const type2 = checker.getApparentType(type1)
|
||||
const typeStr = checker.typeToString(type2, undefined, ts.TypeFormatFlags.InTypeAlias)
|
||||
console.log('PLUGIN: RESOLVED TYPE ARGUMENT', typeStr) // TODO: not yet working
|
||||
|
||||
const depsAndReturnType = `{ deps: ${paramType}; return: ${returnType} }`
|
||||
|
||||
@ -81,34 +81,4 @@ const transformer: ts.TransformerFactory<ts.SourceFile> = context => {
|
||||
}
|
||||
}
|
||||
|
||||
// WIP
|
||||
function resolveTypeArgumentOfCall(checker: ts.TypeChecker, macroCall: ts.CallExpression, typeIndex: number) : ts.Type | undefined {
|
||||
|
||||
// @ts-ignore
|
||||
console.log( 'TEST D', macroCall.arguments[0].typeParameters)
|
||||
|
||||
if (!macroCall.typeArguments || !macroCall.typeArguments[typeIndex]) return;
|
||||
const type = checker.getTypeAtLocation(macroCall.typeArguments[typeIndex]);
|
||||
|
||||
console.log( 'TEST A', type, macroCall.typeArguments )
|
||||
|
||||
return type
|
||||
|
||||
// const lastMacroCall = this.getLastMacro();
|
||||
// if (!lastMacroCall) return type;
|
||||
// if (type.isTypeParameter()) {
|
||||
// const resolvedTypeParameterIndex = lastMacroCall.macro.typeParams.findIndex(arg => this.checker.getTypeAtLocation(arg) === type);
|
||||
// if (resolvedTypeParameterIndex === -1) return;
|
||||
// if (lastMacroCall.call && ts.isCallExpression(lastMacroCall.call)) {
|
||||
// const resolvedTypeParam = lastMacroCall.call.typeArguments?.[resolvedTypeParameterIndex];
|
||||
// if (!resolvedTypeParam) return resolveTypeArguments(this.checker, lastMacroCall.call)[resolvedTypeParameterIndex];
|
||||
// return this.checker.getTypeAtLocation(resolvedTypeParam);
|
||||
// } else return;
|
||||
// } else {
|
||||
// const allParams = lastMacroCall.macro.typeParams.map(p => this.checker.getTypeAtLocation(p));
|
||||
// const replacementTypes = resolveTypeArguments(this.checker, lastMacroCall.call as ts.CallExpression);
|
||||
// return resolveTypeWithTypeParams(type, allParams, replacementTypes);
|
||||
// }
|
||||
}
|
||||
|
||||
export default transformer
|
||||
|
Loading…
Reference in New Issue
Block a user