This is a:
Which concerns:
Relates to #202.
What is the current behaviour?
Transforming a barebones file that imports types from a dependency causes that dependency to get imported, even if the types aren't used - and the runtime types aren't available.
In this particular case, I'm passing the annotate: false option to babel-plugin-flow-runtime to try and work around #202.
import type { APIGatewayEvent, Context, ProxyResult } from 'flow-aws-lambda';
import { load } from './load';
export function handle(evt: APIGatewayEvent<any>, ctx: Context): Promise<ProxyResult> {
return load(evt, ctx);
}
Babel generates the following from the above file, which imports the flow-aws-lambda package; this package exports types, but does not export runtime types. I could try and use @babel/register to work around this, but for my purposes I'd like to have babel spit out code that's directly executed by node, for auditing and deployment purposes.
"use strict";
exports.handle = handle;
var _flowAwsLambda = require("flow-aws-lambda");
var _load = require("./load");
var _flowRuntime = _interopRequireDefault(require("flow-runtime"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
const APIGatewayEvent = _flowRuntime.default.tdz(() => _flowAwsLambda.APIGatewayEvent);
const Context = _flowRuntime.default.tdz(() => _flowAwsLambda.Context);
const ProxyResult = _flowRuntime.default.tdz(() => _flowAwsLambda.ProxyResult);
function handle(evt, ctx) {
return (0, _load.load)(evt, ctx);
}
What is the expected behaviour?
Generate only those runtime types that actually get used (in this case, none), and omit the associated imports if any:
--- dist/index.js
+++ dist/index.js
@@ -1,8 +1,6 @@
"use strict";
exports.handle = handle;
-
-var _flowAwsLambda = require("flow-aws-lambda");
var _load = require("./load");
@@ -10,12 +8,6 @@
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-const APIGatewayEvent = _flowRuntime.default.tdz(() => _flowAwsLambda.APIGatewayEvent);
-
-const Context = _flowRuntime.default.tdz(() => _flowAwsLambda.Context);
-
-const ProxyResult = _flowRuntime.default.tdz(() => _flowAwsLambda.ProxyResult);
-
function handle(evt, ctx) {
return (0, _load.load)(evt, ctx);
}
Along these lines, it'd also be nice to be able to disable annotations for a specific function, but I think for now disabling annotations just for specific files in babel's rc file will suffice.
Which package versions are you using?
flow-runtime@0.17.0
babel-plugin-flow-runtime@0.19.0
This is a:
Which concerns:
Relates to #202.
What is the current behaviour?
Transforming a barebones file that imports types from a dependency causes that dependency to get imported, even if the types aren't used - and the runtime types aren't available.
In this particular case, I'm passing the
annotate: falseoption tobabel-plugin-flow-runtimeto try and work around #202.Babel generates the following from the above file, which imports the
flow-aws-lambdapackage; this package exports types, but does not export runtime types. I could try and use@babel/registerto work around this, but for my purposes I'd like to have babel spit out code that's directly executed bynode, for auditing and deployment purposes.What is the expected behaviour?
Generate only those runtime types that actually get used (in this case, none), and omit the associated imports if any:
Along these lines, it'd also be nice to be able to disable annotations for a specific function, but I think for now disabling annotations just for specific files in babel's rc file will suffice.
Which package versions are you using?
flow-runtime@0.17.0babel-plugin-flow-runtime@0.19.0