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: 2 additions & 0 deletions changelog.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@

## Unreleased

- Add support for `.npmrc` ([#96](https://github.com/hasura/ndc-open-api-lambda/pull/96))

## [[1.6.1](https://github.com/hasura/ndc-open-api-lambda/releases/tag/v1.6.1)] 2025-05-12

- Update dependencies. Also update ndc-nodejs-lambda to `v1.14.0` ([#93](https://github.com/hasura/ndc-open-api-lambda/pull/93))
Expand Down
6 changes: 0 additions & 6 deletions src/app/context.ts
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,6 @@ export enum LogLevel {
PANIC = "panic",
}

const NDC_NODEJS_LAMBDA_SDK_VERSION = "v1.8.0";

const PACKAGE_JSON_FILENAME = "package.json";
const TS_CONFIG_FILENAME = "tsconfig.json";

Expand Down Expand Up @@ -185,10 +183,6 @@ export class Context {
return FUNCTIONS_TS_FILE_TEMPLATE_FILE_NAME;
}

public getNdcNodeJsLambdaSdkVersion(): SemVer {
return new SemVer(NDC_NODEJS_LAMBDA_SDK_VERSION);
}

public getNodeVersion(): string {
return NODE_VERSION;
}
Expand Down
35 changes: 13 additions & 22 deletions src/app/writer/package-json-writer.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,11 @@ import * as fs from "fs";
import * as context from "../context";
import * as logger from "../../util/logger";
import { SemVer } from "semver";
import NPMCliPackageJson, * as PackageJson from "@npmcli/package-json";
import NPMCliPackageJson from "@npmcli/package-json";
import { exit } from "process";

export async function writeToFileSystem() {
const ndcNodeJsLambdaSdkVersion = await getNdcNodeJsLambdaSdkVersion();
const ndcNodeJsLambdaSdkVersion = await getLatestNdcNodeJsLambdaSdkVersion();

if (packageJsonExists()) {
logger.info(
Expand Down Expand Up @@ -82,29 +83,19 @@ function packageJsonExists(): boolean {
return fs.existsSync(context.getInstance().getPackageJsonFilePath());
}

async function getNdcNodeJsLambdaSdkVersion(): Promise<SemVer> {
async function getLatestNdcNodeJsLambdaSdkVersion(): Promise<SemVer> {
try {
await pacote.manifest(
`@hasura/ndc-lambda-sdk@${context.getInstance().getNdcNodeJsLambdaSdkVersion()}`,
{},
const ndcNodeJsLambdaPackageManifest = await pacote.manifest(
`@hasura/ndc-lambda-sdk`,
{
// this is required for custom registry support via .npmrc file (and other npm config options)
where: context.getInstance().getUserMountedFilePath(), // Use pacote's where option for npm config resolution (.npmrc file)
},
);

return context.getInstance().getNdcNodeJsLambdaSdkVersion();
return new SemVer(ndcNodeJsLambdaPackageManifest.version);
} catch (e) {
const latestNdcNodeJsLambdaSdkVersion =
getLatestNdcNodeJsLambdaSdkVersion();
logger.error(
`Error while fetching NDC NodeJS Lambda SDK Version: ${context.getInstance().getNdcNodeJsLambdaSdkVersion()}. Using the latest version (${latestNdcNodeJsLambdaSdkVersion}) instead`,
);
return latestNdcNodeJsLambdaSdkVersion;
logger.fatal("Error while downloading dependency @hasura/ndc-lambda-sdk", e);
exit(1);
}
}

async function getLatestNdcNodeJsLambdaSdkVersion(): Promise<SemVer> {
const ndcNodeJsLambdaPackageManifest = await pacote.manifest(
`@hasura/ndc-lambda-sdk`,
{},
);

return new SemVer(ndcNodeJsLambdaPackageManifest.version);
}