@arcaelas/dynamite 1.0.25 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +13 -13
- package/{src → build/cjs}/@types/index.d.ts +26 -1
- package/build/cjs/@types/index.js.map +1 -0
- package/{src → build/cjs}/core/client.d.ts +22 -19
- package/build/cjs/core/client.js +384 -0
- package/build/cjs/core/client.js.map +1 -0
- package/build/cjs/core/decorator.d.ts +38 -0
- package/build/cjs/core/decorator.js +38 -0
- package/build/cjs/core/decorator.js.map +1 -0
- package/build/cjs/core/table.d.ts +55 -0
- package/build/cjs/core/table.js +851 -0
- package/build/cjs/core/table.js.map +1 -0
- package/build/cjs/decorators/indexes.d.ts +20 -0
- package/build/cjs/decorators/indexes.js +45 -0
- package/build/cjs/decorators/indexes.js.map +1 -0
- package/{src → build/cjs}/decorators/relations.d.ts +8 -7
- package/{src → build/cjs}/decorators/relations.js +9 -8
- package/build/cjs/decorators/relations.js.map +1 -0
- package/build/cjs/decorators/timestamps.d.ts +20 -0
- package/build/cjs/decorators/timestamps.js +34 -0
- package/build/cjs/decorators/timestamps.js.map +1 -0
- package/build/cjs/decorators/transforms.d.ts +41 -0
- package/build/cjs/decorators/transforms.js +98 -0
- package/build/cjs/decorators/transforms.js.map +1 -0
- package/{src → build/cjs}/index.d.ts +5 -3
- package/{src → build/cjs}/index.js +7 -6
- package/build/cjs/index.js.map +1 -0
- package/build/cjs/package.json +1 -0
- package/build/cjs/test/basic.d.ts +1 -0
- package/build/cjs/test/basic.js +248 -0
- package/build/cjs/test/basic.js.map +1 -0
- package/build/cjs/test/bulk.d.ts +1 -0
- package/build/cjs/test/bulk.js +108 -0
- package/build/cjs/test/bulk.js.map +1 -0
- package/build/cjs/test/contracts.d.ts +1 -0
- package/build/cjs/test/contracts.js +343 -0
- package/build/cjs/test/contracts.js.map +1 -0
- package/build/cjs/test/filters.d.ts +1 -0
- package/build/cjs/test/filters.js +190 -0
- package/build/cjs/test/filters.js.map +1 -0
- package/build/cjs/test/index.d.ts +1 -0
- package/build/cjs/test/index.js +36 -0
- package/build/cjs/test/index.js.map +1 -0
- package/build/cjs/test/query_scan.d.ts +1 -0
- package/build/cjs/test/query_scan.js +195 -0
- package/build/cjs/test/query_scan.js.map +1 -0
- package/build/cjs/test/relations.d.ts +1 -0
- package/build/cjs/test/relations.js +246 -0
- package/build/cjs/test/relations.js.map +1 -0
- package/build/cjs/test/transactions.d.ts +1 -0
- package/build/cjs/test/transactions.js +145 -0
- package/build/cjs/test/transactions.js.map +1 -0
- package/{src → build/cjs}/utils/relations.d.ts +1 -0
- package/{src → build/cjs}/utils/relations.js +5 -10
- package/build/cjs/utils/relations.js.map +1 -0
- package/build/cjs/utils/ulid.d.ts +10 -0
- package/build/cjs/utils/ulid.js +55 -0
- package/build/cjs/utils/ulid.js.map +1 -0
- package/build/esm/@types/index.d.ts +213 -0
- package/build/esm/@types/index.js +8 -0
- package/build/esm/@types/index.js.map +1 -0
- package/build/esm/core/client.d.ts +96 -0
- package/build/esm/core/client.js +375 -0
- package/build/esm/core/client.js.map +1 -0
- package/build/esm/core/decorator.d.ts +38 -0
- package/build/esm/core/decorator.js +34 -0
- package/build/esm/core/decorator.js.map +1 -0
- package/build/esm/core/table.d.ts +55 -0
- package/build/esm/core/table.js +848 -0
- package/build/esm/core/table.js.map +1 -0
- package/build/esm/decorators/indexes.d.ts +20 -0
- package/build/esm/decorators/indexes.js +42 -0
- package/build/esm/decorators/indexes.js.map +1 -0
- package/build/esm/decorators/relations.d.ts +75 -0
- package/build/esm/decorators/relations.js +112 -0
- package/build/esm/decorators/relations.js.map +1 -0
- package/build/esm/decorators/timestamps.d.ts +20 -0
- package/build/esm/decorators/timestamps.js +31 -0
- package/build/esm/decorators/timestamps.js.map +1 -0
- package/build/esm/decorators/transforms.d.ts +41 -0
- package/build/esm/decorators/transforms.js +92 -0
- package/build/esm/decorators/transforms.js.map +1 -0
- package/build/esm/index.d.ts +17 -0
- package/build/esm/index.js +24 -0
- package/build/esm/index.js.map +1 -0
- package/build/esm/package.json +1 -0
- package/build/esm/test/basic.d.ts +1 -0
- package/build/esm/test/basic.js +245 -0
- package/build/esm/test/basic.js.map +1 -0
- package/build/esm/test/bulk.d.ts +1 -0
- package/build/esm/test/bulk.js +105 -0
- package/build/esm/test/bulk.js.map +1 -0
- package/build/esm/test/contracts.d.ts +1 -0
- package/build/esm/test/contracts.js +340 -0
- package/build/esm/test/contracts.js.map +1 -0
- package/build/esm/test/filters.d.ts +1 -0
- package/build/esm/test/filters.js +187 -0
- package/build/esm/test/filters.js.map +1 -0
- package/build/esm/test/index.d.ts +1 -0
- package/build/esm/test/index.js +31 -0
- package/build/esm/test/index.js.map +1 -0
- package/build/esm/test/query_scan.d.ts +1 -0
- package/build/esm/test/query_scan.js +192 -0
- package/build/esm/test/query_scan.js.map +1 -0
- package/build/esm/test/relations.d.ts +1 -0
- package/build/esm/test/relations.js +243 -0
- package/build/esm/test/relations.js.map +1 -0
- package/build/esm/test/transactions.d.ts +1 -0
- package/build/esm/test/transactions.js +142 -0
- package/build/esm/test/transactions.js.map +1 -0
- package/build/esm/utils/relations.d.ts +42 -0
- package/build/esm/utils/relations.js +207 -0
- package/build/esm/utils/relations.js.map +1 -0
- package/build/esm/utils/ulid.d.ts +10 -0
- package/build/esm/utils/ulid.js +52 -0
- package/build/esm/utils/ulid.js.map +1 -0
- package/package.json +31 -9
- package/src/core/client.js +0 -294
- package/src/core/decorator.d.ts +0 -29
- package/src/core/decorator.js +0 -103
- package/src/core/table.d.ts +0 -81
- package/src/core/table.js +0 -892
- package/src/decorators/indexes.d.ts +0 -38
- package/src/decorators/indexes.js +0 -59
- package/src/decorators/timestamps.d.ts +0 -54
- package/src/decorators/timestamps.js +0 -72
- package/src/decorators/transforms.d.ts +0 -99
- package/src/decorators/transforms.js +0 -166
- /package/{src → build/cjs}/@types/index.js +0 -0
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file relations.ts
|
|
3
|
+
* @description Sistema de carga de relaciones con batch loading
|
|
4
|
+
* @autor Miguel Alejandro
|
|
5
|
+
* @fecha 2025-01-28
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* @description Opciones para include de relaciones
|
|
9
|
+
*/
|
|
10
|
+
interface IncludeOptions {
|
|
11
|
+
where?: Record<string, any>;
|
|
12
|
+
attributes?: string[];
|
|
13
|
+
limit?: number;
|
|
14
|
+
offset?: number;
|
|
15
|
+
skip?: number;
|
|
16
|
+
order?: 'asc' | 'desc';
|
|
17
|
+
include?: Record<string, IncludeOptions | boolean>;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* @description Procesa includes recursivamente para cargar relaciones con caché
|
|
21
|
+
* @param items Array de instancias a poblar
|
|
22
|
+
* @param include Objeto con relaciones a incluir
|
|
23
|
+
* @param TableClass Clase de la tabla actual
|
|
24
|
+
* @param depth Profundidad actual (máximo 5 para prevenir deep nesting)
|
|
25
|
+
* @param queryCache Caché de queries para evitar duplicados (opcional)
|
|
26
|
+
* @returns Items con relaciones pobladas
|
|
27
|
+
* @example
|
|
28
|
+
* ```typescript
|
|
29
|
+
* // Uso interno en Table.where()
|
|
30
|
+
* await processIncludes(users, {
|
|
31
|
+
* posts: {
|
|
32
|
+
* where: { published: true },
|
|
33
|
+
* limit: 5,
|
|
34
|
+
* include: {
|
|
35
|
+
* comments: true
|
|
36
|
+
* }
|
|
37
|
+
* }
|
|
38
|
+
* }, User);
|
|
39
|
+
* ```
|
|
40
|
+
*/
|
|
41
|
+
export declare const processIncludes: (items: any[], include: Record<string, IncludeOptions | boolean>, TableClass: any, depth?: number, queryCache?: Map<string, Map<string, any>>) => Promise<any[]>;
|
|
42
|
+
export {};
|
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file relations.ts
|
|
3
|
+
* @description Sistema de carga de relaciones con batch loading
|
|
4
|
+
* @autor Miguel Alejandro
|
|
5
|
+
* @fecha 2025-01-28
|
|
6
|
+
*/
|
|
7
|
+
import { ScanCommand } from "@aws-sdk/client-dynamodb";
|
|
8
|
+
import { marshall, unmarshall } from "@aws-sdk/util-dynamodb";
|
|
9
|
+
import { requireClient } from "../core/client.js";
|
|
10
|
+
import { SCHEMA } from "../core/decorator.js";
|
|
11
|
+
/**
|
|
12
|
+
* @description Batch load para HasMany/HasOne
|
|
13
|
+
* Obtiene items relacionados donde foreignKey IN parent_ids
|
|
14
|
+
*/
|
|
15
|
+
const batchLoadHasMany = async (items, relation, options = {}) => {
|
|
16
|
+
const parent_ids = items.map(i => i[relation.localKey]).filter(Boolean);
|
|
17
|
+
if (!parent_ids.length)
|
|
18
|
+
return new Map();
|
|
19
|
+
// Obtener clase del modelo relacionado
|
|
20
|
+
const RelatedModel = relation.model();
|
|
21
|
+
// Construir filtros combinados
|
|
22
|
+
const filters = {
|
|
23
|
+
[relation.foreignKey]: { $in: parent_ids },
|
|
24
|
+
...options.where
|
|
25
|
+
};
|
|
26
|
+
// Query con todas las opciones aplicadas
|
|
27
|
+
const related = await RelatedModel.where(filters, {
|
|
28
|
+
attributes: options.attributes,
|
|
29
|
+
order: options.order?.toUpperCase(),
|
|
30
|
+
limit: undefined, // Se aplica después de agrupar
|
|
31
|
+
offset: undefined,
|
|
32
|
+
});
|
|
33
|
+
// Agrupar por foreignKey
|
|
34
|
+
const grouped = new Map();
|
|
35
|
+
for (const item of related) {
|
|
36
|
+
const key = String(item[relation.foreignKey]);
|
|
37
|
+
if (!grouped.has(key))
|
|
38
|
+
grouped.set(key, []);
|
|
39
|
+
grouped.get(key).push(item);
|
|
40
|
+
}
|
|
41
|
+
// Aplicar limit por grupo
|
|
42
|
+
if (options.limit) {
|
|
43
|
+
const offset = options.skip ?? options.offset ?? 0;
|
|
44
|
+
for (const [key, groupItems] of grouped) {
|
|
45
|
+
grouped.set(key, groupItems.slice(offset, offset + options.limit));
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
return grouped;
|
|
49
|
+
};
|
|
50
|
+
/**
|
|
51
|
+
* @description Batch load para BelongsTo
|
|
52
|
+
* Obtiene items donde id IN local_keys
|
|
53
|
+
*/
|
|
54
|
+
const batchLoadBelongsTo = async (items, relation, options = {}) => {
|
|
55
|
+
const local_keys = items.map(i => i[relation.localKey]).filter(Boolean);
|
|
56
|
+
if (!local_keys.length)
|
|
57
|
+
return new Map();
|
|
58
|
+
const RelatedModel = relation.model();
|
|
59
|
+
// Query con opciones aplicadas
|
|
60
|
+
const related = await RelatedModel.where({ [relation.foreignKey]: { $in: local_keys } }, { attributes: options.attributes });
|
|
61
|
+
const result = new Map();
|
|
62
|
+
for (const item of related) {
|
|
63
|
+
result.set(String(item[relation.foreignKey]), item);
|
|
64
|
+
}
|
|
65
|
+
return result;
|
|
66
|
+
};
|
|
67
|
+
/**
|
|
68
|
+
* @description Batch load para ManyToMany
|
|
69
|
+
* Obtiene items relacionados usando tabla pivot
|
|
70
|
+
*/
|
|
71
|
+
const batchLoadManyToMany = async (items, relation, options = {}) => {
|
|
72
|
+
const parent_ids = items.map(i => i[relation.localKey]).filter(Boolean);
|
|
73
|
+
if (!parent_ids.length)
|
|
74
|
+
return new Map();
|
|
75
|
+
const client = requireClient();
|
|
76
|
+
// [1] Query pivot table usando OR chain (DynamoDB no soporta IN nativo)
|
|
77
|
+
const or_conditions = parent_ids.map((_, i) => `#fk = :id${i}`).join(' OR ');
|
|
78
|
+
const pivot_result = await client.send(new ScanCommand({
|
|
79
|
+
TableName: relation.pivotTable,
|
|
80
|
+
FilterExpression: parent_ids.length > 0 ? `(${or_conditions})` : undefined,
|
|
81
|
+
ExpressionAttributeNames: { '#fk': relation.foreignKey },
|
|
82
|
+
ExpressionAttributeValues: marshall(parent_ids.reduce((acc, id, i) => ({ ...acc, [`:id${i}`]: id }), {}))
|
|
83
|
+
}));
|
|
84
|
+
const pivot_rows = (pivot_result.Items ?? []).map(item => unmarshall(item));
|
|
85
|
+
if (pivot_rows.length === 0)
|
|
86
|
+
return new Map();
|
|
87
|
+
// [2] Extract unique related IDs
|
|
88
|
+
const related_ids = [...new Set(pivot_rows.map(row => row[relation.relatedKey]))];
|
|
89
|
+
// [3] Batch load related models con opciones aplicadas
|
|
90
|
+
const RelatedModel = relation.model();
|
|
91
|
+
// Construir filtros combinados
|
|
92
|
+
const filters = {
|
|
93
|
+
[relation.relatedPK]: { $in: related_ids },
|
|
94
|
+
...options.where
|
|
95
|
+
};
|
|
96
|
+
const related_items = await RelatedModel.where(filters, {
|
|
97
|
+
attributes: options.attributes,
|
|
98
|
+
order: options.order?.toUpperCase(),
|
|
99
|
+
});
|
|
100
|
+
// [5] Map related items by ID
|
|
101
|
+
const related_map = new Map(related_items.map((item) => [String(item[relation.relatedPK]), item]));
|
|
102
|
+
// [6] Group by parent ID using pivot as bridge
|
|
103
|
+
const grouped = new Map();
|
|
104
|
+
for (const pivot of pivot_rows) {
|
|
105
|
+
const parent_id = String(pivot[relation.foreignKey]);
|
|
106
|
+
const related_id = String(pivot[relation.relatedKey]);
|
|
107
|
+
const related_item = related_map.get(related_id);
|
|
108
|
+
if (related_item) {
|
|
109
|
+
if (!grouped.has(parent_id))
|
|
110
|
+
grouped.set(parent_id, []);
|
|
111
|
+
grouped.get(parent_id).push(related_item);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
// [7] Apply limit per group
|
|
115
|
+
if (options.limit) {
|
|
116
|
+
const offset = options.skip ?? options.offset ?? 0;
|
|
117
|
+
for (const [key, items_arr] of grouped) {
|
|
118
|
+
grouped.set(key, items_arr.slice(offset, offset + options.limit));
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
return grouped;
|
|
122
|
+
};
|
|
123
|
+
/**
|
|
124
|
+
* @description Procesa includes recursivamente para cargar relaciones con caché
|
|
125
|
+
* @param items Array de instancias a poblar
|
|
126
|
+
* @param include Objeto con relaciones a incluir
|
|
127
|
+
* @param TableClass Clase de la tabla actual
|
|
128
|
+
* @param depth Profundidad actual (máximo 5 para prevenir deep nesting)
|
|
129
|
+
* @param queryCache Caché de queries para evitar duplicados (opcional)
|
|
130
|
+
* @returns Items con relaciones pobladas
|
|
131
|
+
* @example
|
|
132
|
+
* ```typescript
|
|
133
|
+
* // Uso interno en Table.where()
|
|
134
|
+
* await processIncludes(users, {
|
|
135
|
+
* posts: {
|
|
136
|
+
* where: { published: true },
|
|
137
|
+
* limit: 5,
|
|
138
|
+
* include: {
|
|
139
|
+
* comments: true
|
|
140
|
+
* }
|
|
141
|
+
* }
|
|
142
|
+
* }, User);
|
|
143
|
+
* ```
|
|
144
|
+
*/
|
|
145
|
+
export const processIncludes = async (items, include, TableClass, depth = 0, queryCache = new Map()) => {
|
|
146
|
+
// Límite reducido de 10 a 5 para mejor performance
|
|
147
|
+
if (!include || depth > 5 || !items.length)
|
|
148
|
+
return items;
|
|
149
|
+
const schema = TableClass[SCHEMA];
|
|
150
|
+
if (!schema)
|
|
151
|
+
return items;
|
|
152
|
+
const promises = Object.entries(include)
|
|
153
|
+
.filter(([key]) => Object.prototype.hasOwnProperty.call(schema.columns, key))
|
|
154
|
+
.map(async ([relation_key, options]) => {
|
|
155
|
+
const column = schema.columns[relation_key];
|
|
156
|
+
if (!column?.store?.relation)
|
|
157
|
+
return;
|
|
158
|
+
const relation = column.store.relation;
|
|
159
|
+
const opts = typeof options === 'boolean' ? {} : options;
|
|
160
|
+
// Generar clave de caché basada en tipo de relación y IDs de padres
|
|
161
|
+
const parent_ids = items.map(i => i[relation.localKey]).filter(Boolean);
|
|
162
|
+
const cache_key = `${relation.type}:${relation.model().name}:${JSON.stringify(parent_ids.sort())}:${JSON.stringify(opts.where || {})}`;
|
|
163
|
+
// Batch load según tipo con caché
|
|
164
|
+
let data;
|
|
165
|
+
// Verificar caché primero
|
|
166
|
+
if (queryCache.has(cache_key)) {
|
|
167
|
+
data = queryCache.get(cache_key);
|
|
168
|
+
}
|
|
169
|
+
else {
|
|
170
|
+
if (relation.type === 'HasMany') {
|
|
171
|
+
data = await batchLoadHasMany(items, relation, opts);
|
|
172
|
+
}
|
|
173
|
+
else if (relation.type === 'HasOne') {
|
|
174
|
+
const hasMany = await batchLoadHasMany(items, relation, { ...opts, limit: 1 });
|
|
175
|
+
data = new Map();
|
|
176
|
+
for (const [k, v] of hasMany) {
|
|
177
|
+
data.set(k, v[0] ?? null);
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
else if (relation.type === 'ManyToMany') {
|
|
181
|
+
data = await batchLoadManyToMany(items, relation, opts);
|
|
182
|
+
}
|
|
183
|
+
else {
|
|
184
|
+
// BelongsTo
|
|
185
|
+
data = await batchLoadBelongsTo(items, relation, opts);
|
|
186
|
+
}
|
|
187
|
+
// Guardar en caché
|
|
188
|
+
queryCache.set(cache_key, data);
|
|
189
|
+
}
|
|
190
|
+
for (const item of items) {
|
|
191
|
+
const key = String(item[relation.localKey]);
|
|
192
|
+
item[relation_key] = (relation.type === 'HasMany' || relation.type === 'ManyToMany')
|
|
193
|
+
? data.get(key) ?? []
|
|
194
|
+
: data.get(key) ?? null;
|
|
195
|
+
}
|
|
196
|
+
// Recursión para includes anidados con caché propagado
|
|
197
|
+
if (opts.include && data.size) {
|
|
198
|
+
const all_related = Array.from(data.values()).flat().filter(Boolean);
|
|
199
|
+
if (all_related.length) {
|
|
200
|
+
await processIncludes(all_related, opts.include, relation.model(), depth + 1, queryCache);
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
});
|
|
204
|
+
await Promise.all(promises);
|
|
205
|
+
return items;
|
|
206
|
+
};
|
|
207
|
+
//# sourceMappingURL=relations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"relations.js","sourceRoot":"","sources":["../../../src/utils/relations.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @description ULID (Universally Unique Lexicographically Sortable Identifier) generator.
|
|
3
|
+
* @description Generador de ULID (Identificador Único Lexicográficamente Ordenable).
|
|
4
|
+
*
|
|
5
|
+
* 48 bits timestamp (ms) + 80 bits random, Crockford Base32 encoding.
|
|
6
|
+
* Monotonic within the same millisecond: sequential calls in the same ms produce incrementing IDs.
|
|
7
|
+
*
|
|
8
|
+
* Monotónico dentro del mismo milisegundo: llamadas secuenciales en el mismo ms producen IDs incrementales.
|
|
9
|
+
*/
|
|
10
|
+
export declare function ulid(): string;
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @description ULID (Universally Unique Lexicographically Sortable Identifier) generator.
|
|
3
|
+
* @description Generador de ULID (Identificador Único Lexicográficamente Ordenable).
|
|
4
|
+
*
|
|
5
|
+
* 48 bits timestamp (ms) + 80 bits random, Crockford Base32 encoding.
|
|
6
|
+
* Monotonic within the same millisecond: sequential calls in the same ms produce incrementing IDs.
|
|
7
|
+
*
|
|
8
|
+
* Monotónico dentro del mismo milisegundo: llamadas secuenciales en el mismo ms producen IDs incrementales.
|
|
9
|
+
*/
|
|
10
|
+
const CHARS = '0123456789ABCDEFGHJKMNPQRSTVWXYZ';
|
|
11
|
+
let last_time = 0;
|
|
12
|
+
let last_random_hi = 0;
|
|
13
|
+
let last_random_lo = 0;
|
|
14
|
+
function encode_time(time, len) {
|
|
15
|
+
let str = '';
|
|
16
|
+
for (let i = len; i > 0; i--) {
|
|
17
|
+
str = CHARS[time % 32] + str;
|
|
18
|
+
time = Math.floor(time / 32);
|
|
19
|
+
}
|
|
20
|
+
return str;
|
|
21
|
+
}
|
|
22
|
+
function encode_random() {
|
|
23
|
+
let str = '';
|
|
24
|
+
let hi = last_random_hi;
|
|
25
|
+
let lo = last_random_lo;
|
|
26
|
+
for (let i = 0; i < 8; i++) {
|
|
27
|
+
str = CHARS[lo % 32] + str;
|
|
28
|
+
lo = Math.floor(lo / 32);
|
|
29
|
+
}
|
|
30
|
+
for (let i = 0; i < 8; i++) {
|
|
31
|
+
str = CHARS[hi % 32] + str;
|
|
32
|
+
hi = Math.floor(hi / 32);
|
|
33
|
+
}
|
|
34
|
+
return str;
|
|
35
|
+
}
|
|
36
|
+
export function ulid() {
|
|
37
|
+
let now = Date.now();
|
|
38
|
+
if (now === last_time) {
|
|
39
|
+
last_random_lo++;
|
|
40
|
+
if (last_random_lo > 0xFFFFFFFFFF) {
|
|
41
|
+
last_random_lo = 0;
|
|
42
|
+
last_random_hi++;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
last_time = now;
|
|
47
|
+
last_random_hi = Math.floor(Math.random() * 0xFFFFFFFFFF);
|
|
48
|
+
last_random_lo = Math.floor(Math.random() * 0xFFFFFFFFFF);
|
|
49
|
+
}
|
|
50
|
+
return encode_time(now, 10) + encode_random();
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=ulid.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ulid.js","sourceRoot":"","sources":["../../../src/utils/ulid.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,MAAM,KAAK,GAAG,kCAAkC,CAAC;AAEjD,IAAI,SAAS,GAAG,CAAC,CAAC;AAClB,IAAI,cAAc,GAAG,CAAC,CAAC;AACvB,IAAI,cAAc,GAAG,CAAC,CAAC;AAEvB,SAAS,WAAW,CAAC,IAAY,EAAE,GAAW;IAC5C,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,KAAK,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC7B,GAAG,GAAG,KAAK,CAAC,IAAI,GAAG,EAAE,CAAC,GAAG,GAAG,CAAC;QAC7B,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC;IAC/B,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,aAAa;IACpB,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,IAAI,EAAE,GAAG,cAAc,CAAC;IACxB,IAAI,EAAE,GAAG,cAAc,CAAC;IACxB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,GAAG,GAAG,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,GAAG,CAAC;QAC3B,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;IAC3B,CAAC;IACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,GAAG,GAAG,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,GAAG,CAAC;QAC3B,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;IAC3B,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,IAAI;IAClB,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAErB,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QACtB,cAAc,EAAE,CAAC;QACjB,IAAI,cAAc,GAAG,YAAY,EAAE,CAAC;YAClC,cAAc,GAAG,CAAC,CAAC;YACnB,cAAc,EAAE,CAAC;QACnB,CAAC;IACH,CAAC;SAAM,CAAC;QACN,SAAS,GAAG,GAAG,CAAC;QAChB,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,YAAY,CAAC,CAAC;QAC1D,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,YAAY,CAAC,CAAC;IAC5D,CAAC;IAED,OAAO,WAAW,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,aAAa,EAAE,CAAC;AAChD,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"author": {
|
|
3
|
-
"email": "
|
|
3
|
+
"email": "community@arcaelas.com",
|
|
4
4
|
"name": "Arcaelas Insiders",
|
|
5
5
|
"url": "https://github.com/arcaelas"
|
|
6
6
|
},
|
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
"pluralize": "^8.0.0",
|
|
16
16
|
"uuid": "^11.1.0"
|
|
17
17
|
},
|
|
18
|
+
"description": "Modern decorator-first ORM for AWS DynamoDB with TypeScript support. Type-safe models, relationships, validations, and transactions.",
|
|
18
19
|
"devDependencies": {
|
|
19
20
|
"@eslint/js": "^9.39.1",
|
|
20
21
|
"@types/node": "^24.0.6",
|
|
@@ -24,13 +25,31 @@
|
|
|
24
25
|
"typescript": "^5.8.3",
|
|
25
26
|
"typescript-eslint": "^8.49.0"
|
|
26
27
|
},
|
|
28
|
+
"exports": {
|
|
29
|
+
".": {
|
|
30
|
+
"import": "./build/esm/index.js",
|
|
31
|
+
"require": "./build/cjs/index.js",
|
|
32
|
+
"types": "./build/esm/index.d.ts"
|
|
33
|
+
}
|
|
34
|
+
},
|
|
27
35
|
"files": [
|
|
28
|
-
"
|
|
29
|
-
"src/**/*.d.ts"
|
|
36
|
+
"build"
|
|
30
37
|
],
|
|
31
38
|
"homepage": "https://github.com/arcaelas/dynamite",
|
|
39
|
+
"keywords": [
|
|
40
|
+
"dynamodb",
|
|
41
|
+
"orm",
|
|
42
|
+
"aws",
|
|
43
|
+
"dynamodb-orm",
|
|
44
|
+
"typescript",
|
|
45
|
+
"decorators",
|
|
46
|
+
"arcaelas",
|
|
47
|
+
"arcaelas insiders",
|
|
48
|
+
"arcaelas-insiders"
|
|
49
|
+
],
|
|
32
50
|
"license": "ISC",
|
|
33
|
-
"main": "
|
|
51
|
+
"main": "./build/cjs/index.js",
|
|
52
|
+
"module": "./build/esm/index.js",
|
|
34
53
|
"name": "@arcaelas/dynamite",
|
|
35
54
|
"publishConfig": {
|
|
36
55
|
"access": "public",
|
|
@@ -41,11 +60,14 @@
|
|
|
41
60
|
"url": "https://github.com/arcaelas/dynamite.git"
|
|
42
61
|
},
|
|
43
62
|
"scripts": {
|
|
44
|
-
"build": "
|
|
63
|
+
"build": "yarn build:esm && yarn build:cjs",
|
|
64
|
+
"build:cjs": "tsc --module commonjs --moduleResolution node --outDir build/cjs && tsc-alias --outDir build/cjs && echo '{\"type\":\"commonjs\"}' > build/cjs/package.json",
|
|
65
|
+
"build:esm": "tsc --module ESNext --moduleResolution bundler --outDir build/esm && tsc-alias --resolve-full-paths --outDir build/esm && echo '{\"type\":\"module\"}' > build/esm/package.json",
|
|
45
66
|
"docs": "mkdocs gh-deploy --force",
|
|
46
|
-
"
|
|
47
|
-
"prepublishOnly": "yarn build",
|
|
48
|
-
"
|
|
67
|
+
"lint": "eslint src/ --fix",
|
|
68
|
+
"prepublishOnly": "rm -rf build && npm version minor && yarn build",
|
|
69
|
+
"release": "npm publish --access public"
|
|
49
70
|
},
|
|
50
|
-
"
|
|
71
|
+
"types": "./build/esm/index.d.ts",
|
|
72
|
+
"version": "2.1.0"
|
|
51
73
|
}
|