mirror of
https://github.com/Kong/insomnia.git
synced 2026-11-05 20:43:52 -05:00
* refactor(structure): dissolve account/ into common/ and ui/ session.ts is split by import group so each file has one runtime context: - common/account/session.ts: the isomorphic store accessors + getPrivateKey (imports only insomnia-data + ~/runtimes), used by both main (sentry, cloud-sync) and renderer. - ui/account/session.ts: the window/insomnia-api auth flow (absorbKey, logout, credential cleanup, migrateFromLocalStorage); re-exports the common core so renderer callers keep one import surface. crypt.ts -> common/account/ (used by ipc + both crypto adapters); generateAES256Key now uses globalThis.crypto instead of window.crypto so the module satisfies the common/ no-DOM-globals rule. * refactor(structure): dissolve utils/ into ui/, common/, main/ Placed each former utils/ module by its actual importer context: - ui/utils/: router, try-interpolate, grpc, string-check, prettify/, xpath/ (renderer-only). The index.ts barrel merged into the existing ui/utils.ts. - common/utils/: environment-utils, graph-ql, plugin-name, invariant, utf8-bytes, vault, url/ (imported by both renderer and main/node side). - main/utils/: sealedbox (main-only). prettify tests now load fixtures via import.meta.glob instead of node:fs so they are legal in the renderer execution context. * refactor(structure): split plugins/ into ui/, common/, and plugin host - ui/plugins/: renderer-bridge, create, misc (renderer-only; window, no node) - common/plugins/: types, bridge-types (pure shared types, used by main + renderer + the plugin host) - plugins/ retained as the plugin-host residual: index, invoke-method, context/, themes. These run in the node-enabled plugin window and are intentionally dual-context (index.ts forks on __IS_RENDERER__ between window.main and electron.shell), so they belong to neither ui/ nor main/ nor common/. * refactor(structure): split templating/ into ui/, common/, and host residual - common/templating/: constants, types, render-error, render-context-serialization, tokenize-args, faker-functions, local-template-tags, liquid-engine, liquid-extension-worker, utils, mask-or-decrypt-vault-data, third_party (pure/isomorphic, imported by both sides). types.ts now declares a local BinaryToTextEncoding alias instead of importing node:crypto, so it is legal in common/. - ui/templating/: renderer-safe, worker (renderer/web-worker only). - templating/ retained as host residual: index + liquid-extension, which use node:crypto/os AND window.main (dual-context, like the plugin host). Updated the one cross-package importer (insomnia-scripting-environment) to the new common/ path. * style: re-sort imports after folder reorg (eslint --fix) * docs: runtime-context folder reorganization rationale * chore: treat vendored yarn-standalone bundle as a generated artifact The webpack-bundled bin/yarn-standalone.js is a vendored build artifact, not hand-edited source. An accidental reformat produced a 260k-line diff. Mark it generated/no-diff in .gitattributes (keeps git diffs fast, collapses on GitHub), make the prettier ignore explicit, and deny Claude read/edit access. ESLint already ignores it via the existing **/bin/* rule. * fix: drop unused try-interpolate import after rebase onto develop The rebase merge kept a direct tryToInterpolateRequestOrShowRenderErrorModal import in request-url-bar and websocket action-bar, but develop refactored both to call renderRealtimeConnectPayload instead, leaving the import unused (TS6133).
45 lines
2.1 KiB
JavaScript
45 lines
2.1 KiB
JavaScript
const { exec } = require('child_process');
|
|
const util = require('util');
|
|
const path = require('path');
|
|
const execAsync = util.promisify(exec);
|
|
|
|
// adapted from https://www.electron.build/win.html#how-do-delegate-code-signing
|
|
// It was possible code-sign installer after packaging, but some files are only available
|
|
// through hooking into the signing step of electron-builder while the final installer is being built
|
|
// This makes it possible to sign the Update.exe and stub of Insomnia.exe that end up in the installation folder
|
|
exports.default = async function (configuration) {
|
|
if (configuration.options.target.length === 0) {
|
|
console.log('[customSign] Skipping signing because target is empty');
|
|
return;
|
|
}
|
|
|
|
const { SM_KEYPAIR_ALIAS, SM_API_KEY, SM_CLIENT_CERT_PASSWORD } = process.env;
|
|
if (!SM_KEYPAIR_ALIAS || !SM_API_KEY || !SM_CLIENT_CERT_PASSWORD) {
|
|
console.log('[customSign] Skipping signing, Missing required environment variable: SM_KEYPAIR_ALIAS');
|
|
return;
|
|
}
|
|
|
|
// Note: Avoid changing the lines below. Risk of breaking the windows code-signing process.
|
|
// Feedback loop > 15 mins. Requires a branch on origin, a PR, and a separate dummy release pipeline to test changes.
|
|
const rawPath = configuration.path.replace(/(\r\n|\n|\r)/gm, ''); // remove /n and other crap from path
|
|
console.log('[customSign] File to sign before final packaging:', rawPath);
|
|
const absolutePath = path.resolve(rawPath); // C:\Users\...\Update.exe
|
|
const fixedAbsolutePath = absolutePath.replace(/\\/g, '/'); // C:/Users/.../Update.exe
|
|
const smctlSignCommand = `smctl sign --simple --keypair-alias ${SM_KEYPAIR_ALIAS} --input ${fixedAbsolutePath}`;
|
|
|
|
try {
|
|
console.log('[customSign] Starting to run smctl sign cmd...');
|
|
const { stdout, stderr } = await execAsync(smctlSignCommand);
|
|
|
|
console.log('[customSign] smctl sign command output:', stdout);
|
|
if (stderr) {
|
|
console.error('[customSign] smctl sign command error output:', stderr);
|
|
}
|
|
|
|
console.log('[customSign] File signed successfully.');
|
|
} catch (error) {
|
|
console.error('[customSign] Error executing smctl sign command:', error);
|
|
throw error;
|
|
}
|
|
};
|