Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion eslint.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ const config = [
'prefer-template': 'error',
'prefer-arrow-callback': 'error',
},
ignores: ['node_modules/', 'build/', 'dist/', 'coverage/', 'features/support/fbresult_generated.js'],
ignores: ['node_modules/', 'build/', 'dist/', 'coverage/', 'features/generated/**'],
},
];

Expand Down
2 changes: 1 addition & 1 deletion features/step_definitions/distance_matrix.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
import util from 'util';

import flatbuffers from 'flatbuffers';
import { osrm } from '../support/fbresult_generated.js';
import { osrm } from '../support/fbresult.js';
const FBResult = osrm.engine.api.fbresult.FBResult;
import { When } from '@cucumber/cucumber';

Expand Down
2 changes: 1 addition & 1 deletion features/step_definitions/nearest.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
import util from 'util';

import flatbuffers from 'flatbuffers';
import { osrm } from '../support/fbresult_generated.js';
import { osrm } from '../support/fbresult.js';
const FBResult = osrm.engine.api.fbresult.FBResult;
import assert from 'node:assert';
import { When } from '@cucumber/cucumber';
Expand Down
28 changes: 28 additions & 0 deletions features/support/fbresult.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
// Loads the flatbuffers JavaScript bundle used to decode `format=flatbuffers`
// responses, generating it first from include/engine/api/flatbuffers/*.fbs.
//
// The bundle is not committed: a stale copy silently decodes the old field
// layout, so it is rebuilt whenever the schemas change. The script returns
// immediately when the bundle is already up to date.
import { execFileSync } from 'node:child_process';
import path from 'node:path';
import { fileURLToPath, pathToFileURL } from 'node:url';

const root = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '../..');

try {
execFileSync('bash', [path.join(root, 'scripts/regenerate_fbresult_js.sh')], {
cwd: root,
// Keep stdout quiet so it does not interleave with cucumber's formatter,
// but let errors (such as "no flatc found") through.
stdio: ['ignore', 'ignore', 'inherit'],
});
} catch {
throw new Error(
'Failed to generate features/generated/fbresult.js from the flatbuffers ' +
'schemas (see the message above). Run `npm run regenerate-fbresult` for details.'
);
}

const bundle = pathToFileURL(path.join(root, 'features/generated/fbresult.js')).href;
export const { osrm } = await import(bundle);
Loading
Loading