New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

convex-helpers

Package Overview
Dependencies
Maintainers
1
Versions
144
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

convex-helpers - npm Package Compare versions

Comparing version 0.1.12 to 0.1.13

2

dist/index.d.ts

@@ -8,3 +8,3 @@ /**

*/
export declare function asyncMap<FromType, ToType>(list: Iterable<FromType>, asyncTransform: (item: FromType) => Promise<ToType>): Promise<ToType[]>;
export declare function asyncMap<FromType, ToType>(list: Iterable<FromType>, asyncTransform: (item: FromType, index: number) => Promise<ToType>): Promise<ToType[]>;
/**

@@ -11,0 +11,0 @@ * Filters out null elements from an array.

@@ -10,4 +10,6 @@ /**

const promises = [];
let index = 0;
for (const item of list) {
promises.push(asyncTransform(item));
promises.push(asyncTransform(item, index));
index += 1;
}

@@ -14,0 +16,0 @@ return Promise.all(promises);

@@ -1,2 +0,2 @@

import { FieldTypeFromFieldPath, TableNamesInDataModel, GenericDataModel, GenericDatabaseReader, DocumentByName, SystemTableNames } from "convex/server";
import { FieldTypeFromFieldPath, TableNamesInDataModel, GenericDataModel, GenericDatabaseReader, DocumentByName, SystemTableNames, NamedIndex, NamedTableInfo, IndexNames, FieldPaths } from "convex/server";
import { GenericId } from "convex/values";

@@ -21,10 +21,11 @@ /**

export declare function getAllOrThrow<DataModel extends GenericDataModel, TableName extends TableNamesInDataModel<DataModel>>(db: GenericDatabaseReader<DataModel>, ids: Iterable<GenericId<TableName>>): Promise<DocumentByName<DataModel, TableName>[]>;
type UserIndexes<DataModel extends GenericDataModel, TableName extends TableNamesInDataModel<DataModel>> = Exclude<keyof DataModel[TableName]["indexes"], "by_creation_time"> & string;
type UserIndexes<DataModel extends GenericDataModel, TableName extends TableNamesInDataModel<DataModel>> = Exclude<IndexNames<NamedTableInfo<DataModel, TableName>>, "by_creation_time"> & string;
type TablesWithLookups<DataModel extends GenericDataModel> = {
[T in TableNamesInDataModel<DataModel>]: UserIndexes<DataModel, T> extends never ? never : T;
}[TableNamesInDataModel<DataModel>];
type FirstIndexField<DataModel extends GenericDataModel, TableName extends TableNamesInDataModel<DataModel>, IndexName extends IndexNames<NamedTableInfo<DataModel, TableName>>> = NamedIndex<NamedTableInfo<DataModel, TableName>, IndexName>[0];
type LookupFieldPaths<DataModel extends GenericDataModel, TableName extends TableNamesInDataModel<DataModel>> = {
[Index in UserIndexes<DataModel, TableName>]: DataModel[TableName]["indexes"][Index][0];
[IndexName in UserIndexes<DataModel, TableName>]: FirstIndexField<DataModel, TableName, IndexName>;
}[UserIndexes<DataModel, TableName>];
type FieldIfDoesntMatchIndex<DataModel extends GenericDataModel, TableName extends TableNamesInDataModel<DataModel>, IndexName extends UserIndexes<DataModel, TableName>> = DataModel[TableName]["indexes"][IndexName][0] extends IndexName ? [DataModel[TableName]["indexes"][IndexName][0]?] : [DataModel[TableName]["indexes"][IndexName][0]];
type FieldIfDoesntMatchIndex<DataModel extends GenericDataModel, TableName extends TableNamesInDataModel<DataModel>, IndexName extends UserIndexes<DataModel, TableName>> = FirstIndexField<DataModel, TableName, IndexName> extends IndexName ? IndexName extends `by_${infer _}` ? never : [FirstIndexField<DataModel, TableName, IndexName>?] : `by_${FirstIndexField<DataModel, TableName, IndexName>}` extends IndexName ? [FirstIndexField<DataModel, TableName, IndexName>?] : [FirstIndexField<DataModel, TableName, IndexName>];
/**

@@ -49,3 +50,3 @@ * Get a document matching the given value for a specified field.

*/
export declare function getOneFrom<DataModel extends GenericDataModel, TableName extends TablesWithLookups<DataModel>, IndexName extends UserIndexes<DataModel, TableName>>(db: GenericDatabaseReader<DataModel>, table: TableName, index: IndexName, value: FieldTypeFromFieldPath<DocumentByName<DataModel, TableName>, DataModel[TableName]["indexes"][IndexName][0]>, ...fieldArg: FieldIfDoesntMatchIndex<DataModel, TableName, IndexName>): Promise<DocumentByName<DataModel, TableName> | null>;
export declare function getOneFrom<DataModel extends GenericDataModel, TableName extends TablesWithLookups<DataModel>, IndexName extends UserIndexes<DataModel, TableName>>(db: GenericDatabaseReader<DataModel>, table: TableName, index: IndexName, value: FieldTypeFromFieldPath<DocumentByName<DataModel, TableName>, FirstIndexField<DataModel, TableName, IndexName>>, ...fieldArg: FieldIfDoesntMatchIndex<DataModel, TableName, IndexName>): Promise<DocumentByName<DataModel, TableName> | null>;
/**

@@ -70,3 +71,3 @@ * Get a document matching the given value for a specified field.

*/
export declare function getOneFromOrThrow<DataModel extends GenericDataModel, TableName extends TablesWithLookups<DataModel>, IndexName extends UserIndexes<DataModel, TableName>>(db: GenericDatabaseReader<DataModel>, table: TableName, index: IndexName, value: FieldTypeFromFieldPath<DocumentByName<DataModel, TableName>, DataModel[TableName]["indexes"][IndexName][0]>, ...fieldArg: FieldIfDoesntMatchIndex<DataModel, TableName, IndexName>): Promise<DocumentByName<DataModel, TableName>>;
export declare function getOneFromOrThrow<DataModel extends GenericDataModel, TableName extends TablesWithLookups<DataModel>, IndexName extends UserIndexes<DataModel, TableName>>(db: GenericDatabaseReader<DataModel>, table: TableName, index: IndexName, value: FieldTypeFromFieldPath<DocumentByName<DataModel, TableName>, FirstIndexField<DataModel, TableName, IndexName>>, ...fieldArg: FieldIfDoesntMatchIndex<DataModel, TableName, IndexName>): Promise<DocumentByName<DataModel, TableName>>;
/**

@@ -90,6 +91,6 @@ * Get a list of documents matching the given value for a specified field.

*/
export declare function getManyFrom<DataModel extends GenericDataModel, TableName extends TablesWithLookups<DataModel>, IndexName extends UserIndexes<DataModel, TableName>>(db: GenericDatabaseReader<DataModel>, table: TableName, index: IndexName, value: FieldTypeFromFieldPath<DocumentByName<DataModel, TableName>, DataModel[TableName]["indexes"][IndexName][0]>, ...fieldArg: FieldIfDoesntMatchIndex<DataModel, TableName, IndexName>): Promise<DocumentByName<DataModel, TableName>[]>;
export declare function getManyFrom<DataModel extends GenericDataModel, TableName extends TablesWithLookups<DataModel>, IndexName extends UserIndexes<DataModel, TableName>>(db: GenericDatabaseReader<DataModel>, table: TableName, index: IndexName, value: FieldTypeFromFieldPath<DocumentByName<DataModel, TableName>, FirstIndexField<DataModel, TableName, IndexName>>, ...fieldArg: FieldIfDoesntMatchIndex<DataModel, TableName, IndexName>): Promise<DocumentByName<DataModel, TableName>[]>;
type IdFilePaths<DataModel extends GenericDataModel, InTableName extends TableNamesInDataModel<DataModel>, TableName extends TableNamesInDataModel<DataModel> | SystemTableNames> = {
[FieldName in DataModel[InTableName]["fieldPaths"]]: FieldTypeFromFieldPath<DocumentByName<DataModel, InTableName>, FieldName> extends GenericId<TableName> ? FieldName extends "_id" ? never : FieldName : never;
}[DataModel[InTableName]["fieldPaths"]];
[FieldName in FieldPaths<NamedTableInfo<DataModel, InTableName>>]: FieldTypeFromFieldPath<DocumentByName<DataModel, InTableName>, FieldName> extends GenericId<TableName> ? FieldName extends "_id" ? never : FieldName : never;
}[FieldPaths<NamedTableInfo<DataModel, InTableName>>];
type LookupAndIdFilePaths<DataModel extends GenericDataModel, TableName extends TablesWithLookups<DataModel>> = {

@@ -125,3 +126,3 @@ [FieldPath in IdFilePaths<DataModel, TableName, TableNamesInDataModel<DataModel> | SystemTableNames>]: LookupFieldPaths<DataModel, TableName> extends FieldPath ? never : true;

*/
export declare function getManyVia<DataModel extends GenericDataModel, JoinTableName extends JoinTables<DataModel>, ToField extends IdFilePaths<DataModel, JoinTableName, TableNamesInDataModel<DataModel> | SystemTableNames>, IndexName extends UserIndexes<DataModel, JoinTableName>, TargetTableName extends FieldTypeFromFieldPath<DocumentByName<DataModel, JoinTableName>, ToField> extends GenericId<infer TargetTableName> ? TargetTableName : never>(db: GenericDatabaseReader<DataModel>, table: JoinTableName, toField: ToField, index: IndexName, value: FieldTypeFromFieldPath<DocumentByName<DataModel, JoinTableName>, DataModel[JoinTableName]["indexes"][IndexName][0]>, ...fieldArg: FieldIfDoesntMatchIndex<DataModel, JoinTableName, IndexName>): Promise<(DocumentByName<DataModel, TargetTableName> | null)[]>;
export declare function getManyVia<DataModel extends GenericDataModel, JoinTableName extends JoinTables<DataModel>, ToField extends IdFilePaths<DataModel, JoinTableName, TableNamesInDataModel<DataModel> | SystemTableNames>, IndexName extends UserIndexes<DataModel, JoinTableName>, TargetTableName extends FieldTypeFromFieldPath<DocumentByName<DataModel, JoinTableName>, ToField> extends GenericId<infer TargetTableName> ? TargetTableName : never>(db: GenericDatabaseReader<DataModel>, table: JoinTableName, toField: ToField, index: IndexName, value: FieldTypeFromFieldPath<DocumentByName<DataModel, JoinTableName>, FirstIndexField<DataModel, JoinTableName, IndexName>>, ...fieldArg: FieldIfDoesntMatchIndex<DataModel, JoinTableName, IndexName>): Promise<(DocumentByName<DataModel, TargetTableName> | null)[]>;
/**

@@ -128,0 +129,0 @@ * Get related documents by using a join table.

@@ -24,2 +24,9 @@ import { asyncMap, nullThrows } from "..";

}
function firstIndexField(index, field) {
if (field)
return field;
if (index.startsWith("by_"))
return index.slice(3);
return index;
}
/**

@@ -45,3 +52,3 @@ * Get a document matching the given value for a specified field.

export async function getOneFrom(db, table, index, value, ...fieldArg) {
const field = fieldArg[0] ?? index;
const field = firstIndexField(index, fieldArg[0]);
return db

@@ -72,3 +79,3 @@ .query(table)

export async function getOneFromOrThrow(db, table, index, value, ...fieldArg) {
const field = fieldArg[0] ?? index;
const field = firstIndexField(index, fieldArg[0]);
const ret = await db

@@ -99,3 +106,3 @@ .query(table)

export async function getManyFrom(db, table, index, value, ...fieldArg) {
const field = fieldArg[0] ?? index;
const field = firstIndexField(index, fieldArg[0]);
return db

@@ -102,0 +109,0 @@ .query(table)

@@ -10,7 +10,9 @@ /**

list: Iterable<FromType>,
asyncTransform: (item: FromType) => Promise<ToType>
asyncTransform: (item: FromType, index: number) => Promise<ToType>
): Promise<ToType[]> {
const promises: Promise<ToType>[] = [];
let index = 0;
for (const item of list) {
promises.push(asyncTransform(item));
promises.push(asyncTransform(item, index));
index += 1;
}

@@ -17,0 +19,0 @@ return Promise.all(promises);

{
"name": "convex-helpers",
"version": "0.1.12",
"version": "0.1.13",
"description": "A collection of useful code to complement the official convex package.",

@@ -5,0 +5,0 @@ "exports": {

@@ -8,2 +8,6 @@ import {

SystemTableNames,
NamedIndex,
NamedTableInfo,
IndexNames,
FieldPaths,
} from "convex/server";

@@ -52,3 +56,7 @@ import { GenericId } from "convex/values";

TableName extends TableNamesInDataModel<DataModel>
> = Exclude<keyof DataModel[TableName]["indexes"], "by_creation_time"> & string;
> = Exclude<
IndexNames<NamedTableInfo<DataModel, TableName>>,
"by_creation_time"
> &
string;

@@ -64,2 +72,8 @@ type TablesWithLookups<DataModel extends GenericDataModel> = {

type FirstIndexField<
DataModel extends GenericDataModel,
TableName extends TableNamesInDataModel<DataModel>,
IndexName extends IndexNames<NamedTableInfo<DataModel, TableName>>
> = NamedIndex<NamedTableInfo<DataModel, TableName>, IndexName>[0];
// `FieldPath`s that have an index starting with them

@@ -71,6 +85,7 @@ // e.g. `.index("...", [FieldPath, ...])` on the table.

> = {
[Index in UserIndexes<
[IndexName in UserIndexes<DataModel, TableName>]: FirstIndexField<
DataModel,
TableName
>]: DataModel[TableName]["indexes"][Index][0];
TableName,
IndexName
>;
}[UserIndexes<DataModel, TableName>];

@@ -80,2 +95,4 @@

// To be used as a spread argument to optionally require the field name.
// It also allows a field to have an index `by_${field}`, though this means
// it doesn't allow fields that start with a `by_` prefix.
type FieldIfDoesntMatchIndex<

@@ -85,6 +102,24 @@ DataModel extends GenericDataModel,

IndexName extends UserIndexes<DataModel, TableName>
> = DataModel[TableName]["indexes"][IndexName][0] extends IndexName
? [DataModel[TableName]["indexes"][IndexName][0]?]
: [DataModel[TableName]["indexes"][IndexName][0]];
> = FirstIndexField<DataModel, TableName, IndexName> extends IndexName
? // Enforce the variable itself doesn't start with "by_"
IndexName extends `by_${infer _}`
? never
: [FirstIndexField<DataModel, TableName, IndexName>?]
: `by_${FirstIndexField<DataModel, TableName, IndexName>}` extends IndexName
? [FirstIndexField<DataModel, TableName, IndexName>?]
: [FirstIndexField<DataModel, TableName, IndexName>];
function firstIndexField<
DataModel extends GenericDataModel,
TableName extends TablesWithLookups<DataModel>,
IndexName extends UserIndexes<DataModel, TableName>
>(
index: IndexName,
field?: FirstIndexField<DataModel, TableName, IndexName>
): FirstIndexField<DataModel, TableName, IndexName> {
if (field) return field;
if (index.startsWith("by_")) return index.slice(3);
return index;
}
/**

@@ -119,8 +154,7 @@ * Get a document matching the given value for a specified field.

DocumentByName<DataModel, TableName>,
DataModel[TableName]["indexes"][IndexName][0]
FirstIndexField<DataModel, TableName, IndexName>
>,
...fieldArg: FieldIfDoesntMatchIndex<DataModel, TableName, IndexName>
): Promise<DocumentByName<DataModel, TableName> | null> {
const field =
fieldArg[0] ?? (index as DataModel[TableName]["indexes"][IndexName][0]);
const field = firstIndexField(index, fieldArg[0]);
return db

@@ -161,8 +195,7 @@ .query(table)

DocumentByName<DataModel, TableName>,
DataModel[TableName]["indexes"][IndexName][0]
FirstIndexField<DataModel, TableName, IndexName>
>,
...fieldArg: FieldIfDoesntMatchIndex<DataModel, TableName, IndexName>
): Promise<DocumentByName<DataModel, TableName>> {
const field =
fieldArg[0] ?? (index as DataModel[TableName]["indexes"][IndexName][0]);
const field = firstIndexField(index, fieldArg[0]);
const ret = await db

@@ -206,8 +239,7 @@ .query(table)

DocumentByName<DataModel, TableName>,
DataModel[TableName]["indexes"][IndexName][0]
FirstIndexField<DataModel, TableName, IndexName>
>,
...fieldArg: FieldIfDoesntMatchIndex<DataModel, TableName, IndexName>
): Promise<DocumentByName<DataModel, TableName>[]> {
const field =
fieldArg[0] ?? (index as DataModel[TableName]["indexes"][IndexName][0]);
const field = firstIndexField(index, fieldArg[0]);
return db

@@ -225,3 +257,5 @@ .query(table)

> = {
[FieldName in DataModel[InTableName]["fieldPaths"]]: FieldTypeFromFieldPath<
[FieldName in FieldPaths<
NamedTableInfo<DataModel, InTableName>
>]: FieldTypeFromFieldPath<
DocumentByName<DataModel, InTableName>,

@@ -234,3 +268,3 @@ FieldName

: never;
}[DataModel[InTableName]["fieldPaths"]];
}[FieldPaths<NamedTableInfo<DataModel, InTableName>>];

@@ -313,3 +347,3 @@ // Whether a table has an ID field that isn't its sole lookup field.

DocumentByName<DataModel, JoinTableName>,
DataModel[JoinTableName]["indexes"][IndexName][0]
FirstIndexField<DataModel, JoinTableName, IndexName>
>,

@@ -316,0 +350,0 @@ ...fieldArg: FieldIfDoesntMatchIndex<DataModel, JoinTableName, IndexName>

Sorry, the diff of this file is not supported yet

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