@lafken/dynamo 0.10.1
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/LICENCE +21 -0
- package/README.md +503 -0
- package/lib/index.d.ts +3 -0
- package/lib/index.js +19 -0
- package/lib/main/index.d.ts +1 -0
- package/lib/main/index.js +17 -0
- package/lib/main/table/index.d.ts +2 -0
- package/lib/main/table/index.js +18 -0
- package/lib/main/table/table.d.ts +107 -0
- package/lib/main/table/table.js +141 -0
- package/lib/main/table/table.types.d.ts +368 -0
- package/lib/main/table/table.types.js +15 -0
- package/lib/resolver/index.d.ts +1 -0
- package/lib/resolver/index.js +17 -0
- package/lib/resolver/resolver.d.ts +12 -0
- package/lib/resolver/resolver.js +48 -0
- package/lib/resolver/resolver.types.d.ts +13 -0
- package/lib/resolver/resolver.types.js +2 -0
- package/lib/resolver/table/external/external.d.ts +14 -0
- package/lib/resolver/table/external/external.js +15 -0
- package/lib/resolver/table/internal/internal.d.ts +19 -0
- package/lib/resolver/table/internal/internal.js +224 -0
- package/lib/resolver/table/table.types.d.ts +4 -0
- package/lib/resolver/table/table.types.js +2 -0
- package/lib/service/client/client.d.ts +3 -0
- package/lib/service/client/client.js +10 -0
- package/lib/service/index.d.ts +3 -0
- package/lib/service/index.js +19 -0
- package/lib/service/query-builder/base/base.d.ts +19 -0
- package/lib/service/query-builder/base/base.js +151 -0
- package/lib/service/query-builder/base/base.types.d.ts +37 -0
- package/lib/service/query-builder/base/base.types.js +2 -0
- package/lib/service/query-builder/base/base.utils.d.ts +22 -0
- package/lib/service/query-builder/base/base.utils.js +89 -0
- package/lib/service/query-builder/batch-write/batch-write.d.ts +15 -0
- package/lib/service/query-builder/batch-write/batch-write.js +51 -0
- package/lib/service/query-builder/batch-write/batch-write.types.d.ts +9 -0
- package/lib/service/query-builder/batch-write/batch-write.types.js +2 -0
- package/lib/service/query-builder/bulk-create/bulk-create.d.ts +6 -0
- package/lib/service/query-builder/bulk-create/bulk-create.js +26 -0
- package/lib/service/query-builder/bulk-create/bulk-create.types.d.ts +4 -0
- package/lib/service/query-builder/bulk-create/bulk-create.types.js +2 -0
- package/lib/service/query-builder/bulk-delete/bulk-delete.d.ts +6 -0
- package/lib/service/query-builder/bulk-delete/bulk-delete.js +27 -0
- package/lib/service/query-builder/bulk-delete/bulk-delete.types.d.ts +7 -0
- package/lib/service/query-builder/bulk-delete/bulk-delete.types.js +2 -0
- package/lib/service/query-builder/create/create.d.ts +6 -0
- package/lib/service/query-builder/create/create.js +22 -0
- package/lib/service/query-builder/create/create.types.d.ts +6 -0
- package/lib/service/query-builder/create/create.types.js +2 -0
- package/lib/service/query-builder/delete/delete.d.ts +13 -0
- package/lib/service/query-builder/delete/delete.js +33 -0
- package/lib/service/query-builder/delete/delete.types.d.ts +7 -0
- package/lib/service/query-builder/delete/delete.types.js +2 -0
- package/lib/service/query-builder/dynamo-index/dynamo-index.d.ts +15 -0
- package/lib/service/query-builder/dynamo-index/dynamo-index.js +90 -0
- package/lib/service/query-builder/dynamo-index/dynamo-index.types.d.ts +5 -0
- package/lib/service/query-builder/dynamo-index/dynamo-index.types.js +2 -0
- package/lib/service/query-builder/find/find.d.ts +13 -0
- package/lib/service/query-builder/find/find.js +63 -0
- package/lib/service/query-builder/find/find.types.d.ts +8 -0
- package/lib/service/query-builder/find/find.types.js +2 -0
- package/lib/service/query-builder/find-all/find-all.d.ts +10 -0
- package/lib/service/query-builder/find-all/find-all.js +19 -0
- package/lib/service/query-builder/find-one/find-one.d.ts +9 -0
- package/lib/service/query-builder/find-one/find-one.js +20 -0
- package/lib/service/query-builder/index.d.ts +1 -0
- package/lib/service/query-builder/index.js +17 -0
- package/lib/service/query-builder/query-builder.types.d.ts +243 -0
- package/lib/service/query-builder/query-builder.types.js +3 -0
- package/lib/service/query-builder/scan/scan.d.ts +15 -0
- package/lib/service/query-builder/scan/scan.js +57 -0
- package/lib/service/query-builder/scan/scan.types.d.ts +6 -0
- package/lib/service/query-builder/scan/scan.types.js +2 -0
- package/lib/service/query-builder/update/update.d.ts +15 -0
- package/lib/service/query-builder/update/update.js +101 -0
- package/lib/service/query-builder/update/update.types.d.ts +6 -0
- package/lib/service/query-builder/update/update.types.js +2 -0
- package/lib/service/query-builder/update/update.utils.d.ts +11 -0
- package/lib/service/query-builder/update/update.utils.js +22 -0
- package/lib/service/query-builder/upsert/upsert.d.ts +14 -0
- package/lib/service/query-builder/upsert/upsert.js +40 -0
- package/lib/service/query-builder/upsert/upsert.types.d.ts +7 -0
- package/lib/service/query-builder/upsert/upsert.types.js +2 -0
- package/lib/service/repository/index.d.ts +3 -0
- package/lib/service/repository/index.js +19 -0
- package/lib/service/repository/repository.d.ts +3 -0
- package/lib/service/repository/repository.js +89 -0
- package/lib/service/repository/repository.types.d.ts +23 -0
- package/lib/service/repository/repository.types.js +2 -0
- package/lib/service/repository/repository.utils.d.ts +9 -0
- package/lib/service/repository/repository.utils.js +17 -0
- package/lib/service/transaction/index.d.ts +2 -0
- package/lib/service/transaction/index.js +18 -0
- package/lib/service/transaction/transaction.d.ts +4 -0
- package/lib/service/transaction/transaction.js +38 -0
- package/lib/service/transaction/transaction.types.d.ts +5 -0
- package/lib/service/transaction/transaction.types.js +2 -0
- package/package.json +99 -0
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createRepository = void 0;
|
|
4
|
+
const client_1 = require("../client/client");
|
|
5
|
+
const bulk_create_1 = require("../query-builder/bulk-create/bulk-create");
|
|
6
|
+
const bulk_delete_1 = require("../query-builder/bulk-delete/bulk-delete");
|
|
7
|
+
const create_1 = require("../query-builder/create/create");
|
|
8
|
+
const delete_1 = require("../query-builder/delete/delete");
|
|
9
|
+
const dynamo_index_1 = require("../query-builder/dynamo-index/dynamo-index");
|
|
10
|
+
const find_all_1 = require("../query-builder/find-all/find-all");
|
|
11
|
+
const find_one_1 = require("../query-builder/find-one/find-one");
|
|
12
|
+
const scan_1 = require("../query-builder/scan/scan");
|
|
13
|
+
const update_1 = require("../query-builder/update/update");
|
|
14
|
+
const upsert_1 = require("../query-builder/upsert/upsert");
|
|
15
|
+
const repository_utils_1 = require("./repository.utils");
|
|
16
|
+
const createRepository = (model) => {
|
|
17
|
+
const { modelProps, partitionKey, sortKey, fields } = (0, repository_utils_1.getModelInformation)(model);
|
|
18
|
+
const queryBuilderProps = {
|
|
19
|
+
client: modelProps.tracing ? (0, client_1.getClientWithXRay)() : client_1.client,
|
|
20
|
+
fields,
|
|
21
|
+
modelProps,
|
|
22
|
+
partitionKey,
|
|
23
|
+
sortKey,
|
|
24
|
+
};
|
|
25
|
+
const indexes = new dynamo_index_1.DynamoIndexes(modelProps.indexes, partitionKey, sortKey);
|
|
26
|
+
return {
|
|
27
|
+
findOne(inputProps) {
|
|
28
|
+
return new find_one_1.FindOneBuilder({
|
|
29
|
+
...queryBuilderProps,
|
|
30
|
+
indexes,
|
|
31
|
+
inputProps: {
|
|
32
|
+
...inputProps,
|
|
33
|
+
limit: 1,
|
|
34
|
+
},
|
|
35
|
+
});
|
|
36
|
+
},
|
|
37
|
+
findAll(inputProps) {
|
|
38
|
+
return new find_all_1.FindAllBuilder({
|
|
39
|
+
...queryBuilderProps,
|
|
40
|
+
indexes,
|
|
41
|
+
inputProps,
|
|
42
|
+
});
|
|
43
|
+
},
|
|
44
|
+
scan(inputProps = {}) {
|
|
45
|
+
return new scan_1.ScanBuilder({
|
|
46
|
+
...queryBuilderProps,
|
|
47
|
+
inputProps,
|
|
48
|
+
});
|
|
49
|
+
},
|
|
50
|
+
upsert(item, inputProps = {}) {
|
|
51
|
+
return new upsert_1.UpsertBuilder({
|
|
52
|
+
...queryBuilderProps,
|
|
53
|
+
inputProps,
|
|
54
|
+
item,
|
|
55
|
+
});
|
|
56
|
+
},
|
|
57
|
+
create(item) {
|
|
58
|
+
return new create_1.CreateBuilder({
|
|
59
|
+
...queryBuilderProps,
|
|
60
|
+
item,
|
|
61
|
+
});
|
|
62
|
+
},
|
|
63
|
+
update(inputProps) {
|
|
64
|
+
return new update_1.UpdateBuilder({
|
|
65
|
+
...queryBuilderProps,
|
|
66
|
+
inputProps,
|
|
67
|
+
});
|
|
68
|
+
},
|
|
69
|
+
delete(key) {
|
|
70
|
+
return new delete_1.DeleteBuilder({
|
|
71
|
+
...queryBuilderProps,
|
|
72
|
+
key,
|
|
73
|
+
});
|
|
74
|
+
},
|
|
75
|
+
bulkCreate(items) {
|
|
76
|
+
return new bulk_create_1.BulkCreateBuilder({
|
|
77
|
+
...queryBuilderProps,
|
|
78
|
+
items,
|
|
79
|
+
});
|
|
80
|
+
},
|
|
81
|
+
bulkDelete(keys) {
|
|
82
|
+
return new bulk_delete_1.BulkDeleteBuilder({
|
|
83
|
+
...queryBuilderProps,
|
|
84
|
+
keys,
|
|
85
|
+
});
|
|
86
|
+
},
|
|
87
|
+
};
|
|
88
|
+
};
|
|
89
|
+
exports.createRepository = createRepository;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { ClassResource } from '@lafken/common';
|
|
2
|
+
import type { TablePartition } from '../../main';
|
|
3
|
+
import type { FindProps, Item, QueryOneProps, QueryProps, UpdateProps, UpsertProps } from '../query-builder';
|
|
4
|
+
import type { BulkCreateBuilder } from '../query-builder/bulk-create/bulk-create';
|
|
5
|
+
import type { BulkDeleteBuilder } from '../query-builder/bulk-delete/bulk-delete';
|
|
6
|
+
import type { CreateBuilder } from '../query-builder/create/create';
|
|
7
|
+
import type { DeleteBuilder } from '../query-builder/delete/delete';
|
|
8
|
+
import type { FindAllBuilder } from '../query-builder/find-all/find-all';
|
|
9
|
+
import type { FindOneBuilder } from '../query-builder/find-one/find-one';
|
|
10
|
+
import type { ScanBuilder } from '../query-builder/scan/scan';
|
|
11
|
+
import type { UpdateBuilder } from '../query-builder/update/update';
|
|
12
|
+
import type { UpsertBuilder } from '../query-builder/upsert/upsert';
|
|
13
|
+
export type RepositoryReturn<E extends ClassResource> = {
|
|
14
|
+
findOne(inputProps: QueryOneProps<E>): FindOneBuilder<E>;
|
|
15
|
+
findAll(inputProps: QueryProps<E>): FindAllBuilder<E>;
|
|
16
|
+
scan(inputProps?: FindProps<E>): ScanBuilder<E>;
|
|
17
|
+
upsert(item: Item<E>, inputProps?: UpsertProps<E>): UpsertBuilder<E>;
|
|
18
|
+
create(item: Item<E>): CreateBuilder<E>;
|
|
19
|
+
update(inputProps: UpdateProps<E>): UpdateBuilder<E>;
|
|
20
|
+
delete(key: TablePartition<Item<E>>): DeleteBuilder<E>;
|
|
21
|
+
bulkCreate(items: Item<E>[]): BulkCreateBuilder<E>;
|
|
22
|
+
bulkDelete(keys: TablePartition<Item<E>>[]): BulkDeleteBuilder<E>;
|
|
23
|
+
};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { ClassResource } from '@lafken/common';
|
|
2
|
+
import { type FieldsMetadata } from '../../main/table';
|
|
3
|
+
import type { ModelMetadata } from '../query-builder/query-builder.types';
|
|
4
|
+
export declare const getModelInformation: <E extends ClassResource>(table: E) => {
|
|
5
|
+
modelProps: ModelMetadata<E>;
|
|
6
|
+
partitionKey: string;
|
|
7
|
+
sortKey: string | undefined;
|
|
8
|
+
fields: FieldsMetadata;
|
|
9
|
+
};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getModelInformation = void 0;
|
|
4
|
+
const table_1 = require("../../main/table");
|
|
5
|
+
const getModelInformation = (table) => {
|
|
6
|
+
const modelProps = Reflect.getMetadata(table_1.TableMetadataKeys.table, table);
|
|
7
|
+
const partitionKey = Reflect.getMetadata(table_1.TableMetadataKeys.partition_key, table.prototype);
|
|
8
|
+
const sortKey = Reflect.getMetadata(table_1.TableMetadataKeys.sort_key, table.prototype);
|
|
9
|
+
const fields = Reflect.getMetadata(table_1.TableMetadataKeys.fields, table.prototype);
|
|
10
|
+
return {
|
|
11
|
+
modelProps,
|
|
12
|
+
partitionKey,
|
|
13
|
+
sortKey,
|
|
14
|
+
fields,
|
|
15
|
+
};
|
|
16
|
+
};
|
|
17
|
+
exports.getModelInformation = getModelInformation;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./transaction"), exports);
|
|
18
|
+
__exportStar(require("./transaction.types"), exports);
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { type TransactWriteItem } from '@aws-sdk/client-dynamodb';
|
|
2
|
+
import type { QueryTransactions } from './transaction.types';
|
|
3
|
+
export declare const getTransactionType: (builder: QueryTransactions) => keyof TransactWriteItem;
|
|
4
|
+
export declare const transaction: (queryBuilders: QueryTransactions[]) => Promise<void>;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.transaction = exports.getTransactionType = void 0;
|
|
4
|
+
const client_dynamodb_1 = require("@aws-sdk/client-dynamodb");
|
|
5
|
+
const client_1 = require("../client/client");
|
|
6
|
+
const create_1 = require("../query-builder/create/create");
|
|
7
|
+
const delete_1 = require("../query-builder/delete/delete");
|
|
8
|
+
const update_1 = require("../query-builder/update/update");
|
|
9
|
+
const upsert_1 = require("../query-builder/upsert/upsert");
|
|
10
|
+
const getTransactionType = (builder) => {
|
|
11
|
+
let type;
|
|
12
|
+
if (builder instanceof create_1.CreateBuilder || builder instanceof upsert_1.UpsertBuilder) {
|
|
13
|
+
type = 'Put';
|
|
14
|
+
}
|
|
15
|
+
else if (builder instanceof update_1.UpdateBuilder) {
|
|
16
|
+
type = 'Update';
|
|
17
|
+
}
|
|
18
|
+
else if (builder instanceof delete_1.DeleteBuilder) {
|
|
19
|
+
type = 'Delete';
|
|
20
|
+
}
|
|
21
|
+
if (type === undefined) {
|
|
22
|
+
throw new Error('The transaction includes a query that is not allowed');
|
|
23
|
+
}
|
|
24
|
+
return type;
|
|
25
|
+
};
|
|
26
|
+
exports.getTransactionType = getTransactionType;
|
|
27
|
+
const transaction = async (queryBuilders) => {
|
|
28
|
+
const transactionCommands = queryBuilders.map((builder) => {
|
|
29
|
+
return {
|
|
30
|
+
[(0, exports.getTransactionType)(builder)]: builder.getCommand(),
|
|
31
|
+
};
|
|
32
|
+
});
|
|
33
|
+
const command = new client_dynamodb_1.TransactWriteItemsCommand({
|
|
34
|
+
TransactItems: transactionCommands,
|
|
35
|
+
});
|
|
36
|
+
await client_1.client.send(command);
|
|
37
|
+
};
|
|
38
|
+
exports.transaction = transaction;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { CreateBuilder } from '../query-builder/create/create';
|
|
2
|
+
import type { DeleteBuilder } from '../query-builder/delete/delete';
|
|
3
|
+
import type { UpdateBuilder } from '../query-builder/update/update';
|
|
4
|
+
import type { UpsertBuilder } from '../query-builder/upsert/upsert';
|
|
5
|
+
export type QueryTransactions = CreateBuilder<any> | UpsertBuilder<any> | UpdateBuilder<any> | DeleteBuilder<any>;
|
package/package.json
ADDED
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@lafken/dynamo",
|
|
3
|
+
"version": "0.10.1",
|
|
4
|
+
"private": false,
|
|
5
|
+
"description": "Define DynamoDB tables using TypeScript decorators - type-safe, declarative infrastructure with Lafken",
|
|
6
|
+
"keywords": [
|
|
7
|
+
"aws",
|
|
8
|
+
"dynamodb",
|
|
9
|
+
"database",
|
|
10
|
+
"nosql",
|
|
11
|
+
"serverless",
|
|
12
|
+
"typescript",
|
|
13
|
+
"decorators",
|
|
14
|
+
"lafken"
|
|
15
|
+
],
|
|
16
|
+
"homepage": "https://github.com/Hero64/lafken#readme",
|
|
17
|
+
"bugs": "https://github.com/Hero64/lafken/issues",
|
|
18
|
+
"repository": {
|
|
19
|
+
"type": "git",
|
|
20
|
+
"url": "https://github.com/Hero64/lafken",
|
|
21
|
+
"directory": "packages/dynamo"
|
|
22
|
+
},
|
|
23
|
+
"license": "MIT",
|
|
24
|
+
"author": "Aníbal Jorquera",
|
|
25
|
+
"exports": {
|
|
26
|
+
"./main": {
|
|
27
|
+
"types": "./lib/main/index.d.ts",
|
|
28
|
+
"import": "./lib/main/index.js",
|
|
29
|
+
"require": "./lib/main/index.js"
|
|
30
|
+
},
|
|
31
|
+
"./service": {
|
|
32
|
+
"types": "./lib/service/index.d.ts",
|
|
33
|
+
"import": "./lib/service/index.js",
|
|
34
|
+
"require": "./lib/service/index.js"
|
|
35
|
+
},
|
|
36
|
+
"./resolver": {
|
|
37
|
+
"types": "./lib/resolver/index.d.ts",
|
|
38
|
+
"import": "./lib/resolver/index.js",
|
|
39
|
+
"require": "./lib/resolver/index.js"
|
|
40
|
+
}
|
|
41
|
+
},
|
|
42
|
+
"typesVersions": {
|
|
43
|
+
"*": {
|
|
44
|
+
"main": [
|
|
45
|
+
"./lib/main/index.d.ts"
|
|
46
|
+
],
|
|
47
|
+
"service": [
|
|
48
|
+
"./lib/service/index.d.ts"
|
|
49
|
+
],
|
|
50
|
+
"resolver": [
|
|
51
|
+
"./lib/resolver/index.d.ts"
|
|
52
|
+
]
|
|
53
|
+
}
|
|
54
|
+
},
|
|
55
|
+
"files": [
|
|
56
|
+
"lib"
|
|
57
|
+
],
|
|
58
|
+
"dependencies": {
|
|
59
|
+
"@aws-sdk/client-dynamodb": "^3.1020.0",
|
|
60
|
+
"@aws-sdk/util-dynamodb": "^3.996.2",
|
|
61
|
+
"aws-xray-sdk": "^3.12.0",
|
|
62
|
+
"reflect-metadata": "^0.2.2",
|
|
63
|
+
"@lafken/resolver": "0.10.1"
|
|
64
|
+
},
|
|
65
|
+
"devDependencies": {
|
|
66
|
+
"@cdktn/provider-aws": "^23.5.0",
|
|
67
|
+
"@swc/core": "^1.15.21",
|
|
68
|
+
"@swc/helpers": "^0.5.20",
|
|
69
|
+
"@vitest/runner": "^4.1.2",
|
|
70
|
+
"aws-sdk-client-mock": "^4.1.0",
|
|
71
|
+
"aws-sdk-client-mock-vitest": "^7.0.1",
|
|
72
|
+
"cdktn": "^0.22.1",
|
|
73
|
+
"cdktn-vitest": "^1.0.0",
|
|
74
|
+
"constructs": "^10.6.0",
|
|
75
|
+
"typescript": "6.0.2",
|
|
76
|
+
"unplugin-swc": "^1.5.9",
|
|
77
|
+
"vitest": "^4.1.2",
|
|
78
|
+
"@lafken/common": "0.10.1"
|
|
79
|
+
},
|
|
80
|
+
"peerDependencies": {
|
|
81
|
+
"@cdktn/provider-aws": ">=23.0.0",
|
|
82
|
+
"cdktn": ">=0.22.0",
|
|
83
|
+
"constructs": "^10.4.5",
|
|
84
|
+
"@lafken/common": "0.10.1"
|
|
85
|
+
},
|
|
86
|
+
"engines": {
|
|
87
|
+
"node": ">=20.19"
|
|
88
|
+
},
|
|
89
|
+
"publishConfig": {
|
|
90
|
+
"access": "public"
|
|
91
|
+
},
|
|
92
|
+
"scripts": {
|
|
93
|
+
"build": "pnpm clean && tsc -p ./tsconfig.build.json",
|
|
94
|
+
"check-types": "tsc --noEmit -p ./tsconfig.build.json",
|
|
95
|
+
"clean": "rm -rf ./lib",
|
|
96
|
+
"dev": "tsc -w",
|
|
97
|
+
"test": "vitest"
|
|
98
|
+
}
|
|
99
|
+
}
|