@venizia/ignis 0.0.7-14 → 0.0.7-15
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/dist/base/repositories/core/index.d.ts +1 -0
- package/dist/base/repositories/core/index.d.ts.map +1 -1
- package/dist/base/repositories/core/index.js +1 -0
- package/dist/base/repositories/core/index.js.map +1 -1
- package/dist/base/repositories/core/soft-deletable.d.ts +140 -0
- package/dist/base/repositories/core/soft-deletable.d.ts.map +1 -0
- package/dist/base/repositories/core/soft-deletable.js +99 -0
- package/dist/base/repositories/core/soft-deletable.js.map +1 -0
- package/dist/components/auth/authorize/adapters/drizzle-casbin.d.ts +2 -1
- package/dist/components/auth/authorize/adapters/drizzle-casbin.d.ts.map +1 -1
- package/dist/components/auth/authorize/adapters/drizzle-casbin.js +4 -1
- package/dist/components/auth/authorize/adapters/drizzle-casbin.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/base/repositories/core/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/base/repositories/core/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC"}
|
|
@@ -18,4 +18,5 @@ __exportStar(require("./abstract"), exports);
|
|
|
18
18
|
__exportStar(require("./default-crud"), exports);
|
|
19
19
|
__exportStar(require("./persistable"), exports);
|
|
20
20
|
__exportStar(require("./readable"), exports);
|
|
21
|
+
__exportStar(require("./soft-deletable"), exports);
|
|
21
22
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/base/repositories/core/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,6CAA2B;AAC3B,iDAA+B;AAC/B,gDAA8B;AAC9B,6CAA2B"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/base/repositories/core/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,6CAA2B;AAC3B,iDAA+B;AAC/B,gDAA8B;AAC9B,6CAA2B;AAC3B,mDAAiC"}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
import { IdType, TTableInsert, TTableObject, TTableSchemaWithId } from '../../../base/models';
|
|
2
|
+
import { TNullable } from '@venizia/ignis-helpers';
|
|
3
|
+
import { AnyPgColumn } from 'drizzle-orm/pg-core';
|
|
4
|
+
import { IExtraOptions, TCount, TFilter, TWhere } from '../common';
|
|
5
|
+
import { DefaultCRUDRepository } from './default-crud';
|
|
6
|
+
export type TDeletedAtColumn = AnyPgColumn<{
|
|
7
|
+
data: Date | null;
|
|
8
|
+
}>;
|
|
9
|
+
export type TSoftDeletableTableSchema = TTableSchemaWithId & {
|
|
10
|
+
deletedAt: TDeletedAtColumn;
|
|
11
|
+
};
|
|
12
|
+
/**
|
|
13
|
+
* Soft-deletable repository that overrides delete operations to set deletedAt timestamp
|
|
14
|
+
* instead of physically removing records from the database.
|
|
15
|
+
*
|
|
16
|
+
* Models using this repository should:
|
|
17
|
+
* - Have a `deletedAt` column (Date | null)
|
|
18
|
+
* - Set `defaultFilter: { where: { deletedAt: null } }` in @model settings
|
|
19
|
+
* - Include `deletedAt` in `hiddenProperties` if you don't want to expose it
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* ```typescript
|
|
23
|
+
* @model({
|
|
24
|
+
* settings: {
|
|
25
|
+
* hiddenProperties: ['deletedAt'],
|
|
26
|
+
* defaultFilter: { where: { deletedAt: null } },
|
|
27
|
+
* },
|
|
28
|
+
* })
|
|
29
|
+
* export class Category extends BaseEntity<typeof Category.schema> {
|
|
30
|
+
* static schema = pgTable('Category', {
|
|
31
|
+
* ...withTimestamps(),
|
|
32
|
+
* ...withSoftDelete(),
|
|
33
|
+
* });
|
|
34
|
+
* }
|
|
35
|
+
*
|
|
36
|
+
* @repository({ dataSource: PostgresDataSource, model: Category })
|
|
37
|
+
* export class CategoryRepository extends SoftDeletableRepository<typeof Category.schema> {}
|
|
38
|
+
* ```
|
|
39
|
+
*/
|
|
40
|
+
export declare class SoftDeletableRepository<EntitySchema extends TSoftDeletableTableSchema = TSoftDeletableTableSchema, DataObject extends TTableObject<EntitySchema> = TTableObject<EntitySchema>, PersistObject extends TTableInsert<EntitySchema> = TTableInsert<EntitySchema>, ExtraOptions extends IExtraOptions = IExtraOptions> extends DefaultCRUDRepository<EntitySchema, DataObject, PersistObject, ExtraOptions> {
|
|
41
|
+
findById<R = DataObject>(opts: {
|
|
42
|
+
id: IdType;
|
|
43
|
+
filter?: Omit<TFilter<DataObject>, 'where'>;
|
|
44
|
+
options?: ExtraOptions & {
|
|
45
|
+
isStrict?: false;
|
|
46
|
+
};
|
|
47
|
+
}): Promise<TNullable<R>>;
|
|
48
|
+
findById<R = DataObject>(opts: {
|
|
49
|
+
id: IdType;
|
|
50
|
+
filter?: Omit<TFilter<DataObject>, 'where'>;
|
|
51
|
+
options?: ExtraOptions & {
|
|
52
|
+
isStrict?: true;
|
|
53
|
+
};
|
|
54
|
+
}): Promise<R>;
|
|
55
|
+
deleteById(opts: {
|
|
56
|
+
id: IdType;
|
|
57
|
+
options: ExtraOptions & {
|
|
58
|
+
shouldReturn: false;
|
|
59
|
+
shouldHardDelete?: boolean;
|
|
60
|
+
};
|
|
61
|
+
}): Promise<TCount & {
|
|
62
|
+
data: undefined | null;
|
|
63
|
+
}>;
|
|
64
|
+
deleteById<R = DataObject>(opts: {
|
|
65
|
+
id: IdType;
|
|
66
|
+
options?: ExtraOptions & {
|
|
67
|
+
shouldReturn?: true;
|
|
68
|
+
shouldHardDelete?: boolean;
|
|
69
|
+
};
|
|
70
|
+
}): Promise<TCount & {
|
|
71
|
+
data: R;
|
|
72
|
+
}>;
|
|
73
|
+
deleteAll(opts: {
|
|
74
|
+
where?: TWhere<DataObject>;
|
|
75
|
+
options: ExtraOptions & {
|
|
76
|
+
shouldReturn: false;
|
|
77
|
+
force?: boolean;
|
|
78
|
+
shouldHardDelete?: boolean;
|
|
79
|
+
};
|
|
80
|
+
}): Promise<TCount & {
|
|
81
|
+
data: undefined | null;
|
|
82
|
+
}>;
|
|
83
|
+
deleteAll<R = DataObject>(opts: {
|
|
84
|
+
where?: TWhere<DataObject>;
|
|
85
|
+
options?: ExtraOptions & {
|
|
86
|
+
shouldReturn?: true;
|
|
87
|
+
force?: boolean;
|
|
88
|
+
shouldHardDelete?: boolean;
|
|
89
|
+
};
|
|
90
|
+
}): Promise<TCount & {
|
|
91
|
+
data: Array<R>;
|
|
92
|
+
}>;
|
|
93
|
+
deleteBy(opts: {
|
|
94
|
+
where: TWhere<DataObject>;
|
|
95
|
+
options: ExtraOptions & {
|
|
96
|
+
shouldReturn: false;
|
|
97
|
+
force?: boolean;
|
|
98
|
+
shouldHardDelete?: boolean;
|
|
99
|
+
};
|
|
100
|
+
}): Promise<TCount & {
|
|
101
|
+
data: undefined | null;
|
|
102
|
+
}>;
|
|
103
|
+
deleteBy<R = DataObject>(opts: {
|
|
104
|
+
where: TWhere<DataObject>;
|
|
105
|
+
options?: ExtraOptions & {
|
|
106
|
+
shouldReturn?: true;
|
|
107
|
+
force?: boolean;
|
|
108
|
+
shouldHardDelete?: boolean;
|
|
109
|
+
};
|
|
110
|
+
}): Promise<TCount & {
|
|
111
|
+
data: Array<R>;
|
|
112
|
+
}>;
|
|
113
|
+
restoreById<R = DataObject>(opts: {
|
|
114
|
+
id: IdType;
|
|
115
|
+
options?: ExtraOptions & {
|
|
116
|
+
shouldReturn?: boolean;
|
|
117
|
+
};
|
|
118
|
+
}): Promise<TCount & {
|
|
119
|
+
data: TNullable<R>;
|
|
120
|
+
}>;
|
|
121
|
+
restoreAll<R = DataObject>(opts: {
|
|
122
|
+
where?: TWhere<DataObject>;
|
|
123
|
+
options?: ExtraOptions & {
|
|
124
|
+
shouldReturn?: boolean;
|
|
125
|
+
force?: boolean;
|
|
126
|
+
};
|
|
127
|
+
}): Promise<TCount & {
|
|
128
|
+
data: TNullable<Array<R>>;
|
|
129
|
+
}>;
|
|
130
|
+
restoreBy<R = DataObject>(opts: {
|
|
131
|
+
where: TWhere<DataObject>;
|
|
132
|
+
options?: ExtraOptions & {
|
|
133
|
+
shouldReturn?: boolean;
|
|
134
|
+
force?: boolean;
|
|
135
|
+
};
|
|
136
|
+
}): Promise<TCount & {
|
|
137
|
+
data: TNullable<Array<R>>;
|
|
138
|
+
}>;
|
|
139
|
+
}
|
|
140
|
+
//# sourceMappingURL=soft-deletable.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"soft-deletable.d.ts","sourceRoot":"","sources":["../../../../src/base/repositories/core/soft-deletable.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SoftDeletableRepository = void 0;
|
|
4
|
+
const ignis_helpers_1 = require("@venizia/ignis-helpers");
|
|
5
|
+
const default_crud_1 = require("./default-crud");
|
|
6
|
+
/**
|
|
7
|
+
* Soft-deletable repository that overrides delete operations to set deletedAt timestamp
|
|
8
|
+
* instead of physically removing records from the database.
|
|
9
|
+
*
|
|
10
|
+
* Models using this repository should:
|
|
11
|
+
* - Have a `deletedAt` column (Date | null)
|
|
12
|
+
* - Set `defaultFilter: { where: { deletedAt: null } }` in @model settings
|
|
13
|
+
* - Include `deletedAt` in `hiddenProperties` if you don't want to expose it
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```typescript
|
|
17
|
+
* @model({
|
|
18
|
+
* settings: {
|
|
19
|
+
* hiddenProperties: ['deletedAt'],
|
|
20
|
+
* defaultFilter: { where: { deletedAt: null } },
|
|
21
|
+
* },
|
|
22
|
+
* })
|
|
23
|
+
* export class Category extends BaseEntity<typeof Category.schema> {
|
|
24
|
+
* static schema = pgTable('Category', {
|
|
25
|
+
* ...withTimestamps(),
|
|
26
|
+
* ...withSoftDelete(),
|
|
27
|
+
* });
|
|
28
|
+
* }
|
|
29
|
+
*
|
|
30
|
+
* @repository({ dataSource: PostgresDataSource, model: Category })
|
|
31
|
+
* export class CategoryRepository extends SoftDeletableRepository<typeof Category.schema> {}
|
|
32
|
+
* ```
|
|
33
|
+
*/
|
|
34
|
+
class SoftDeletableRepository extends default_crud_1.DefaultCRUDRepository {
|
|
35
|
+
async findById(opts) {
|
|
36
|
+
const result = await super.findById(opts);
|
|
37
|
+
if (opts.options?.isStrict && !result) {
|
|
38
|
+
throw (0, ignis_helpers_1.getError)({
|
|
39
|
+
message: `[${this.constructor.name}][findById] Entity with id ${opts.id} not found`,
|
|
40
|
+
statusCode: ignis_helpers_1.HTTP.ResultCodes.RS_4.NotFound,
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
return result;
|
|
44
|
+
}
|
|
45
|
+
async deleteById(opts) {
|
|
46
|
+
if (opts.options?.shouldHardDelete) {
|
|
47
|
+
return super.deleteById(opts);
|
|
48
|
+
}
|
|
49
|
+
return this.updateById({
|
|
50
|
+
id: opts.id,
|
|
51
|
+
data: { deletedAt: new Date() },
|
|
52
|
+
options: opts.options,
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
deleteAll(opts) {
|
|
56
|
+
if (opts.options?.shouldHardDelete) {
|
|
57
|
+
return super.deleteAll(opts);
|
|
58
|
+
}
|
|
59
|
+
return this.updateAll({
|
|
60
|
+
where: opts.where ?? {},
|
|
61
|
+
data: { deletedAt: new Date() },
|
|
62
|
+
options: opts.options,
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
deleteBy(opts) {
|
|
66
|
+
if (opts.options?.shouldHardDelete) {
|
|
67
|
+
return super.deleteBy(opts);
|
|
68
|
+
}
|
|
69
|
+
return this.updateAll({
|
|
70
|
+
where: opts.where,
|
|
71
|
+
data: { deletedAt: new Date() },
|
|
72
|
+
options: opts.options,
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
// ---------------------------------------------------------------------------
|
|
76
|
+
// Restore Operations
|
|
77
|
+
// ---------------------------------------------------------------------------
|
|
78
|
+
async restoreById(opts) {
|
|
79
|
+
const { shouldReturn = true, ...restOptions } = opts.options ?? {};
|
|
80
|
+
return this.updateById({
|
|
81
|
+
id: opts.id,
|
|
82
|
+
data: { deletedAt: null },
|
|
83
|
+
options: { ...restOptions, shouldReturn, shouldSkipDefaultFilter: true },
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
async restoreAll(opts) {
|
|
87
|
+
const { shouldReturn = true, force, ...restOptions } = opts.options ?? {};
|
|
88
|
+
return this.updateAll({
|
|
89
|
+
where: opts.where ?? {},
|
|
90
|
+
data: { deletedAt: null },
|
|
91
|
+
options: { ...restOptions, shouldReturn, force, shouldSkipDefaultFilter: true },
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
async restoreBy(opts) {
|
|
95
|
+
return this.restoreAll(opts);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
exports.SoftDeletableRepository = SoftDeletableRepository;
|
|
99
|
+
//# sourceMappingURL=soft-deletable.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"soft-deletable.js","sourceRoot":"","sources":["../../../../src/base/repositories/core/soft-deletable.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,7 +19,8 @@ export interface IDrizzleCasbinAdapterOptions {
|
|
|
19
19
|
entities: IDrizzleCasbinEntities;
|
|
20
20
|
}
|
|
21
21
|
export declare class DrizzleCasbinAdapter extends BaseFilteredAdapter<IDrizzleCasbinEntities> {
|
|
22
|
-
private
|
|
22
|
+
private dataSource;
|
|
23
|
+
private get connector();
|
|
23
24
|
constructor(opts: IDrizzleCasbinAdapterOptions);
|
|
24
25
|
protected buildDirectPolicies(opts: {
|
|
25
26
|
filter: ICasbinPolicyFilter;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"drizzle-casbin.d.ts","sourceRoot":"","sources":["../../../../../src/components/auth/authorize/adapters/drizzle-casbin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAiB,MAAM,oBAAoB,CAAC;AAGhE,OAAO,EACL,mBAAmB,EACnB,KAAK,4BAA4B,EACjC,KAAK,mBAAmB,EAEzB,MAAM,iBAAiB,CAAC;AACzB,MAAM,WAAW,sBAAuB,SAAQ,4BAA4B;IAC1E,UAAU,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE,CAAC;IACzD,IAAI,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE,CAAC;IACnD,gBAAgB,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE,CAAC;CAChE;AAED,MAAM,WAAW,4BAA4B;IAC3C,UAAU,EAAE,WAAW,CAAC;IACxB,QAAQ,EAAE,sBAAsB,CAAC;CAClC;AAID,qBAAa,oBAAqB,SAAQ,mBAAmB,CAAC,sBAAsB,CAAC;IACnF,OAAO,CAAC,SAAS,
|
|
1
|
+
{"version":3,"file":"drizzle-casbin.d.ts","sourceRoot":"","sources":["../../../../../src/components/auth/authorize/adapters/drizzle-casbin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAiB,MAAM,oBAAoB,CAAC;AAGhE,OAAO,EACL,mBAAmB,EACnB,KAAK,4BAA4B,EACjC,KAAK,mBAAmB,EAEzB,MAAM,iBAAiB,CAAC;AACzB,MAAM,WAAW,sBAAuB,SAAQ,4BAA4B;IAC1E,UAAU,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE,CAAC;IACzD,IAAI,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE,CAAC;IACnD,gBAAgB,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE,CAAC;CAChE;AAED,MAAM,WAAW,4BAA4B;IAC3C,UAAU,EAAE,WAAW,CAAC;IACxB,QAAQ,EAAE,sBAAsB,CAAC;CAClC;AAID,qBAAa,oBAAqB,SAAQ,mBAAmB,CAAC,sBAAsB,CAAC;IACnF,OAAO,CAAC,UAAU,CAAc;IAEhC,OAAO,KAAK,SAAS,GAEpB;gBAEW,IAAI,EAAE,4BAA4B;cAO9B,mBAAmB,CAAC,IAAI,EAAE;QACxC,MAAM,EAAE,mBAAmB,CAAC;QAC5B,aAAa,EAAE,MAAM,CAAC;KACvB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;cAiCL,kBAAkB,CAAC,IAAI,EAAE;QACvC,MAAM,EAAE,mBAAmB,CAAC;KAC7B,GAAG,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,EAAE,CAAC;QAAC,OAAO,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAA;KAAE,CAAC;cAqC9C,iBAAiB,CAAC,IAAI,EAAE;QACtC,OAAO,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;QAC7B,aAAa,EAAE,MAAM,CAAC;KACvB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;CAoCtB"}
|
|
@@ -6,9 +6,12 @@ const common_1 = require("../common");
|
|
|
6
6
|
const base_filtered_1 = require("./base-filtered");
|
|
7
7
|
// Drizzle Casbin Adapter — read-only FilteredAdapter using raw SQL queries
|
|
8
8
|
class DrizzleCasbinAdapter extends base_filtered_1.BaseFilteredAdapter {
|
|
9
|
+
get connector() {
|
|
10
|
+
return this.dataSource.connector;
|
|
11
|
+
}
|
|
9
12
|
constructor(opts) {
|
|
10
13
|
super({ scope: DrizzleCasbinAdapter.name, entities: opts.entities });
|
|
11
|
-
this.
|
|
14
|
+
this.dataSource = opts.dataSource;
|
|
12
15
|
}
|
|
13
16
|
// Query builders
|
|
14
17
|
async buildDirectPolicies(opts) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"drizzle-casbin.js","sourceRoot":"","sources":["../../../../../src/components/auth/authorize/adapters/drizzle-casbin.ts"],"names":[],"mappings":";;;AACA,6CAAkC;AAClC,sCAA+C;AAC/C,mDAKyB;AAYzB,2EAA2E;AAE3E,MAAa,oBAAqB,SAAQ,mCAA2C;IAGnF,YAAY,IAAkC;QAC5C,KAAK,CAAC,EAAE,KAAK,EAAE,oBAAoB,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QACrE,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"drizzle-casbin.js","sourceRoot":"","sources":["../../../../../src/components/auth/authorize/adapters/drizzle-casbin.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@venizia/ignis",
|
|
3
|
-
"version": "0.0.7-
|
|
3
|
+
"version": "0.0.7-15",
|
|
4
4
|
"description": "High-performance TypeScript server infrastructure combining LoopBack 4 enterprise architecture (decorator-based DI, repository pattern, component system) with Hono speed (~140k req/s). Features auto-generated OpenAPI docs, Drizzle ORM type-safe SQL, JWT/Basic authentication, Casbin authorization, convention-based bootstrapping, and pluggable components for health checks, Swagger UI, mail, Socket.IO, and static assets. Built for Bun and Node.js.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"access-control",
|