UNPKG

convex

Version:

Client for the Convex Cloud

182 lines (181 loc) 7.03 kB
"use strict"; var __create = Object.create; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __getProtoOf = Object.getPrototypeOf; var __hasOwnProp = Object.prototype.hasOwnProperty; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( // If the importer is in node compatibility mode or this is not an ESM // file that has been converted to a CommonJS file using a Babel- // compatible transform (i.e. "__esModule" has not been set), then set // "default" to the CommonJS "module.exports" for node compatibility. isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod )); var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); var push_exports = {}; __export(push_exports, { runPush: () => runPush }); module.exports = __toCommonJS(push_exports); var import_chalk = __toESM(require("chalk"), 1); var import_context = require("../../bundler/context.js"); var import_codegen = require("./codegen.js"); var import_config = require("./config.js"); var import_indexes = require("./indexes.js"); var import_typecheck = require("./typecheck.js"); var import_utils = require("./utils.js"); var import_path = __toESM(require("path"), 1); async function runPush(ctx, options) { const timeRunPushStarts = performance.now(); const { configPath, projectConfig } = await (0, import_config.readProjectConfig)(ctx); const origin = options.url; const verbose = options.verbose || options.dryRun; await (0, import_utils.ensureHasConvexDependency)(ctx, "push"); if (!options.codegen) { (0, import_context.logMessage)( ctx, import_chalk.default.gray("Skipping codegen. Remove --codegen=disable to enable.") ); const funcDir = (0, import_utils.functionsDir)(configPath, projectConfig); await (0, import_typecheck.typeCheckFunctionsInMode)(ctx, options.typecheck, funcDir); } else { await (0, import_codegen.doCodegen)({ ctx, functionsDirectoryPath: (0, import_utils.functionsDir)(configPath, projectConfig), typeCheckMode: options.typecheck, dryRun: options.dryRun, debug: options.debug, quiet: true }); if (verbose) { (0, import_context.logMessage)(ctx, import_chalk.default.green("Codegen finished.")); } } const timeBundleStarts = performance.now(); const { config: localConfig, bundledModuleInfos } = await (0, import_config.configFromProjectConfig)(ctx, projectConfig, configPath, verbose); if (options.debugBundlePath) { await handleDebugBundlePath(ctx, options.debugBundlePath, localConfig); (0, import_context.logMessage)( ctx, `Wrote bundle and metadata to ${options.debugBundlePath}. Skipping rest of push.` ); return; } const timeSchemaPushStarts = performance.now(); const { schemaId, schemaState } = await (0, import_indexes.pushSchema)( ctx, origin, options.adminKey, (0, import_utils.functionsDir)(configPath, localConfig.projectConfig), options.dryRun ); const timeConfigPullStarts = performance.now(); const remoteConfigWithModuleHashes = await (0, import_config.pullConfig)( ctx, void 0, void 0, origin, options.adminKey ); (0, import_context.changeSpinner)(ctx, "Diffing local code and deployment state"); const { diffString, stats } = (0, import_config.diffConfig)( remoteConfigWithModuleHashes, localConfig ); if (diffString === "" && schemaState?.state === "active") { if (verbose) { const msg = localConfig.modules.length === 0 ? `No functions found in ${localConfig.projectConfig.functions}` : "Config already synced"; (0, import_context.logMessage)( ctx, import_chalk.default.gray( `${options.dryRun ? "Command would skip function push" : "Function push skipped"}: ${msg}.` ) ); } return; } if (verbose) { (0, import_context.logMessage)( ctx, import_chalk.default.bold( `Remote config ${options.dryRun ? "would" : "will"} be overwritten with the following changes:` ) ); (0, import_context.logMessage)(ctx, diffString); } if (options.dryRun) { return; } const timePushStarts = performance.now(); const timing = { typecheck: (timeBundleStarts - timeRunPushStarts) / 1e3, bundle: (timeSchemaPushStarts - timeBundleStarts) / 1e3, schemaPush: (timeConfigPullStarts - timeSchemaPushStarts) / 1e3, codePull: (timePushStarts - timeConfigPullStarts) / 1e3, totalBeforePush: (timePushStarts - timeRunPushStarts) / 1e3, moduleDiffStats: stats }; await (0, import_config.pushConfig)( ctx, localConfig, options.adminKey, options.url, timing, schemaId, bundledModuleInfos ); } async function handleDebugBundlePath(ctx, debugBundleDir, config) { if (!ctx.fs.exists(debugBundleDir)) { ctx.fs.mkdir(debugBundleDir); } else if (!ctx.fs.stat(debugBundleDir).isDirectory()) { (0, import_context.logFailure)( ctx, `Path \`${debugBundleDir}\` is not a directory. Please choose an empty directory for \`--debug-bundle-path\`.` ); await ctx.crash(1, "fatal"); } else if (ctx.fs.listDir(debugBundleDir).length !== 0) { (0, import_context.logFailure)( ctx, `Directory \`${debugBundleDir}\` is not empty. Please remove it or choose an empty directory for \`--debug-bundle-path\`.` ); await ctx.crash(1, "fatal"); } ctx.fs.writeUtf8File( import_path.default.join(debugBundleDir, "fullConfig.json"), JSON.stringify(config) ); for (const moduleInfo of config.modules) { const trimmedPath = moduleInfo.path.endsWith(".js") ? moduleInfo.path.slice(0, moduleInfo.path.length - ".js".length) : moduleInfo.path; const environmentDir = import_path.default.join(debugBundleDir, moduleInfo.environment); ctx.fs.mkdir(import_path.default.dirname(import_path.default.join(environmentDir, `${trimmedPath}.js`)), { allowExisting: true, recursive: true }); ctx.fs.writeUtf8File( import_path.default.join(environmentDir, `${trimmedPath}.js`), moduleInfo.source ); if (moduleInfo.sourceMap !== void 0) { ctx.fs.writeUtf8File( import_path.default.join(environmentDir, `${trimmedPath}.js.map`), moduleInfo.sourceMap ); } } } //# sourceMappingURL=push.js.map