Socket
Socket
Sign inDemoInstall

@ts-safeql/generate

Package Overview
Dependencies
Maintainers
1
Versions
44
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@ts-safeql/generate - npm Package Compare versions

Comparing version 0.1.0 to 0.1.1

13

lib/src/generate.d.ts

@@ -13,2 +13,8 @@ import { DuplicateColumnsError, IdentiferCase, ParsedQuery, PostgresError } from "@ts-safeql/shared";

type CacheKey = string;
type OverrideValue = string | {
parameter: string | {
regex: string;
};
return: string;
};
export interface GenerateParams {

@@ -22,8 +28,3 @@ sql: Sql;

overrides?: Partial<{
types: Record<string, string | {
parameter: string | {
regex: string;
};
return: string;
}>;
types: Record<string, OverrideValue>;
}>;

@@ -30,0 +31,0 @@ }

@@ -8,7 +8,7 @@ "use strict";

const get_relations_with_joins_1 = require("./utils/get-relations-with-joins");
const typeResolversMapCache = new Map();
function createGenerator() {
const cacheMap = new Map();
const overrideMap = new Map();
return {
generate: (params) => generate(params, cacheMap),
generate: (params) => generate(params, cacheMap, overrideMap),
dropCacheKey: (cacheKey) => cacheMap.delete(cacheKey),

@@ -19,18 +19,16 @@ clearCache: () => cacheMap.clear(),

exports.createGenerator = createGenerator;
async function generate(params, cacheMap) {
const { sql, query, overrides, cacheMetadata = true } = params;
const { pgColsByTableOidCache, pgTypes, pgEnums } = cacheMetadata
? await (0, shared_1.getOrSetFromMap)({
map: cacheMap,
key: params.cacheKey,
value: () => getDatabaseMetadata(sql, overrides),
})
: await getDatabaseMetadata(sql, overrides);
const typeResolvers = cacheMetadata
? await (0, shared_1.getOrSetFromMap)({
map: typeResolversMapCache,
key: JSON.stringify(params.overrides),
value: () => getTypeResolvers(overrides),
})
: getTypeResolvers(overrides);
async function generate(params, cacheMap, overrideMap) {
const { sql, query, cacheKey, cacheMetadata = true } = params;
const { pgColsByTableOidCache, pgTypes, pgEnums } = await (0, shared_1.getOrSetFromMapWithEnabled)({
shouldCache: cacheMetadata,
map: cacheMap,
key: cacheKey,
value: () => getDatabaseMetadata(sql),
});
const overrides = await (0, shared_1.getOrSetFromMapWithEnabled)({
shouldCache: cacheMetadata,
map: overrideMap,
key: JSON.stringify(params.overrides),
value: () => { var _a, _b; return ({ types: new Map(Object.entries((_b = (_a = params.overrides) === null || _a === void 0 ? void 0 : _a.types) !== null && _b !== void 0 ? _b : {})) }); },
});
try {

@@ -65,3 +63,3 @@ const result = await sql.unsafe(query, [], { prepare: true }).describe();

relationsWithJoins,
typeResolvers,
overrides,
fieldTransform: params.fieldTransform,

@@ -85,3 +83,3 @@ }),

}
async function getDatabaseMetadata(sql, overrides) {
async function getDatabaseMetadata(sql) {
const pgTypes = await getPgTypes(sql);

@@ -91,12 +89,4 @@ const pgCols = await getPgCols(sql);

const pgColsByTableOidCache = (0, shared_1.groupBy)(pgCols, "tableOid");
const typeResolvers = getTypeResolvers(overrides);
return { pgTypes, pgCols, pgEnums, typeResolvers, pgColsByTableOidCache };
return { pgTypes, pgCols, pgEnums, pgColsByTableOidCache };
}
function getTypeResolvers(overrides) {
const typesMap = new Map(Object.entries(shared_1.defaultTypeMapping));
for (const [k, v] of Object.entries(Object.assign({}, overrides === null || overrides === void 0 ? void 0 : overrides.types))) {
typesMap.set(k, typeof v === "string" ? v : v.return);
}
return typesMap;
}
function mapColumnAnalysisResultsToTypeLiteral(params) {

@@ -109,3 +99,3 @@ const properties = params.columns.map((col) => {

relationsWithJoins: params.relationsWithJoins,
typeResolvers: params.typeResolvers,
overrides: params.overrides,
fieldTransform: params.fieldTransform,

@@ -156,3 +146,3 @@ });

function mapColumnAnalysisResultToPropertySignature(params) {
var _a, _b, _c, _d, _e;
var _a, _b, _c, _d, _e, _f;
const pgTypeOid = (_b = (_a = params.col.introspected) === null || _a === void 0 ? void 0 : _a.colBaseTypeOid) !== null && _b !== void 0 ? _b : params.col.described.type;

@@ -164,6 +154,14 @@ const valueAsEnum = (_c = params.pgEnums

pgTypes: params.pgTypes,
typeResolvers: params.typeResolvers,
});
const value = valueAsEnum !== null && valueAsEnum !== void 0 ? valueAsEnum : valueAsType;
const key = (_d = params.col.described.name) !== null && _d !== void 0 ? _d : (_e = params.col.introspected) === null || _e === void 0 ? void 0 : _e.colName;
const valueAsOverride = (() => {
var _a, _b, _c;
const pgType = params.pgTypes.get((_b = (_a = params.col.introspected) === null || _a === void 0 ? void 0 : _a.colTypeOid) !== null && _b !== void 0 ? _b : params.col.described.type);
if (((_c = params.overrides) === null || _c === void 0 ? void 0 : _c.types) === undefined || pgType === undefined) {
return undefined;
}
const override = params.overrides.types.get(pgType.name);
return (0, shared_1.fmap)(override, (x) => (typeof x === "string" ? x : x.return));
})();
const value = (_d = valueAsOverride !== null && valueAsOverride !== void 0 ? valueAsOverride : valueAsEnum) !== null && _d !== void 0 ? _d : valueAsType;
const key = (_e = params.col.described.name) !== null && _e !== void 0 ? _e : (_f = params.col.introspected) === null || _f === void 0 ? void 0 : _f.colName;
let isNullable = false;

@@ -189,3 +187,3 @@ if (params.col.introspected !== undefined) {

}
return getTsTypeFromPgType({ pgTypeName: pgType.name, typeResolvers: params.typeResolvers });
return getTsTypeFromPgType({ pgTypeName: pgType.name });
}

@@ -195,3 +193,3 @@ function getTsTypeFromPgType(params) {

const { isArray, pgType } = parsePgType(params.pgTypeName);
const tsType = (_a = params.typeResolvers.get(pgType)) !== null && _a !== void 0 ? _a : "any";
const tsType = (_a = shared_1.defaultTypesMap.get(pgType)) !== null && _a !== void 0 ? _a : "any";
return isArray ? `${tsType}[]` : tsType;

@@ -198,0 +196,0 @@ }

{
"name": "@ts-safeql/generate",
"version": "0.1.0",
"version": "0.1.1",
"description": "",

@@ -25,4 +25,4 @@ "main": "lib/index.js",

"dependencies": {
"@ts-safeql/shared": "0.1.0",
"@ts-safeql/test-utils": "0.0.10",
"@ts-safeql/shared": "0.1.1",
"@ts-safeql/test-utils": "0.0.11",
"fp-ts": "^2.13.1",

@@ -29,0 +29,0 @@ "pg-connection-string": "^2.5.0",

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc