@acmekit/api-key 2.13.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/README.md +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -0
- package/dist/joiner-config.d.ts +2 -0
- package/dist/joiner-config.d.ts.map +1 -0
- package/dist/joiner-config.js +11 -0
- package/dist/joiner-config.js.map +1 -0
- package/dist/migrations/InitialSetup20240221144943.d.ts +5 -0
- package/dist/migrations/InitialSetup20240221144943.d.ts.map +1 -0
- package/dist/migrations/InitialSetup20240221144943.js +13 -0
- package/dist/migrations/InitialSetup20240221144943.js.map +1 -0
- package/dist/migrations/Migration20240604080145.d.ts +6 -0
- package/dist/migrations/Migration20240604080145.d.ts.map +1 -0
- package/dist/migrations/Migration20240604080145.js +14 -0
- package/dist/migrations/Migration20240604080145.js.map +1 -0
- package/dist/migrations/Migration20241205122700.d.ts +6 -0
- package/dist/migrations/Migration20241205122700.d.ts.map +1 -0
- package/dist/migrations/Migration20241205122700.js +20 -0
- package/dist/migrations/Migration20241205122700.js.map +1 -0
- package/dist/migrations/Migration20251015123842.d.ts +6 -0
- package/dist/migrations/Migration20251015123842.d.ts.map +1 -0
- package/dist/migrations/Migration20251015123842.js +16 -0
- package/dist/migrations/Migration20251015123842.js.map +1 -0
- package/dist/models/api-key.d.ts +14 -0
- package/dist/models/api-key.d.ts.map +1 -0
- package/dist/models/api-key.js +33 -0
- package/dist/models/api-key.js.map +1 -0
- package/dist/models/index.d.ts +2 -0
- package/dist/models/index.d.ts.map +1 -0
- package/dist/models/index.js +9 -0
- package/dist/models/index.js.map +1 -0
- package/dist/services/api-key-module-service.d.ts +45 -0
- package/dist/services/api-key-module-service.d.ts.map +1 -0
- package/dist/services/api-key-module-service.js +414 -0
- package/dist/services/api-key-module-service.js.map +1 -0
- package/dist/services/index.d.ts +2 -0
- package/dist/services/index.d.ts.map +1 -0
- package/dist/services/index.js +6 -0
- package/dist/services/index.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/dist/types/index.d.ts +26 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +3 -0
- package/dist/types/index.js.map +1 -0
- package/package.json +45 -0
package/README.md
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
# API Key Module
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAA;;;;AAE/C,wBAEE"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const utils_1 = require("@acmekit/framework/utils");
|
|
4
|
+
const _services_1 = require("./services");
|
|
5
|
+
exports.default = (0, utils_1.Module)(utils_1.Modules.API_KEY, {
|
|
6
|
+
service: _services_1.ApiKeyModuleService,
|
|
7
|
+
});
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;AAAA,oDAA0D;AAC1D,yCAA+C;AAE/C,kBAAe,IAAA,cAAM,EAAC,eAAO,CAAC,OAAO,EAAE;IACrC,OAAO,EAAE,+BAAmB;CAC7B,CAAC,CAAA"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export declare const joinerConfig: Omit<import("@acmekit/types").ModuleJoinerConfig, "serviceName" | "primaryKeys" | "alias" | "linkableKeys"> & Required<Pick<import("@acmekit/types").ModuleJoinerConfig, "serviceName" | "primaryKeys" | "alias" | "linkableKeys">>;
|
|
2
|
+
//# sourceMappingURL=joiner-config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"joiner-config.d.ts","sourceRoot":"","sources":["../src/joiner-config.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,YAAY,qOAKvB,CAAA"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.joinerConfig = void 0;
|
|
4
|
+
const utils_1 = require("@acmekit/framework/utils");
|
|
5
|
+
exports.joinerConfig = (0, utils_1.defineJoinerConfig)(utils_1.Modules.API_KEY, {
|
|
6
|
+
linkableKeys: {
|
|
7
|
+
// Merged with the autogenerated ones to maintain backward compatibility
|
|
8
|
+
publishable_key_id: "ApiKey",
|
|
9
|
+
},
|
|
10
|
+
});
|
|
11
|
+
//# sourceMappingURL=joiner-config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"joiner-config.js","sourceRoot":"","sources":["../src/joiner-config.ts"],"names":[],"mappings":";;;AAAA,oDAAsE;AAEzD,QAAA,YAAY,GAAG,IAAA,0BAAkB,EAAC,eAAO,CAAC,OAAO,EAAE;IAC9D,YAAY,EAAE;QACZ,wEAAwE;QACxE,kBAAkB,EAAE,QAAQ;KAC7B;CACF,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InitialSetup20240221144943.d.ts","sourceRoot":"","sources":["../../src/migrations/InitialSetup20240221144943.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AAEnE,qBAAa,0BAA2B,SAAQ,SAAS;IACjD,EAAE,IAAI,OAAO,CAAC,IAAI,CAAC;CAW1B"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.InitialSetup20240221144943 = void 0;
|
|
4
|
+
const migrations_1 = require("@acmekit/framework/mikro-orm/migrations");
|
|
5
|
+
class InitialSetup20240221144943 extends migrations_1.Migration {
|
|
6
|
+
async up() {
|
|
7
|
+
this.addSql('create table if not exists "api_key" ("id" text not null, "token" text not null, "salt" text not null, "redacted" text not null, "title" text not null, "type" text not null, "last_used_at" timestamptz null, "created_by" text not null, "created_at" timestamptz not null default now(), "revoked_by" text null, "revoked_at" timestamptz null, constraint "api_key_pkey" primary key ("id"));');
|
|
8
|
+
this.addSql('CREATE UNIQUE INDEX IF NOT EXISTS "IDX_api_key_token_unique" ON "api_key" (token);');
|
|
9
|
+
this.addSql('CREATE INDEX IF NOT EXISTS "IDX_api_key_type" ON "api_key" (type);');
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
exports.InitialSetup20240221144943 = InitialSetup20240221144943;
|
|
13
|
+
//# sourceMappingURL=InitialSetup20240221144943.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InitialSetup20240221144943.js","sourceRoot":"","sources":["../../src/migrations/InitialSetup20240221144943.ts"],"names":[],"mappings":";;;AAAA,wEAAmE;AAEnE,MAAa,0BAA2B,SAAQ,sBAAS;IACvD,KAAK,CAAC,EAAE;QACN,IAAI,CAAC,MAAM,CACT,mYAAmY,CACpY,CAAA;QACD,IAAI,CAAC,MAAM,CACT,oFAAoF,CACrF,CAAA;QACD,IAAI,CAAC,MAAM,CACT,oEAAoE,CACrE,CAAA;IACH,CAAC;CACF;AAZD,gEAYC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Migration20240604080145.d.ts","sourceRoot":"","sources":["../../src/migrations/Migration20240604080145.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AAEnE,qBAAa,uBAAwB,SAAQ,SAAS;IAC9C,EAAE,IAAI,OAAO,CAAC,IAAI,CAAC;IAMnB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAK5B"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Migration20240604080145 = void 0;
|
|
4
|
+
const migrations_1 = require("@acmekit/framework/mikro-orm/migrations");
|
|
5
|
+
class Migration20240604080145 extends migrations_1.Migration {
|
|
6
|
+
async up() {
|
|
7
|
+
this.addSql('alter table if exists "api_key" add column if not exists "updated_at" timestamptz not null default now();');
|
|
8
|
+
}
|
|
9
|
+
async down() {
|
|
10
|
+
this.addSql('alter table if exists "api_key" drop column if exists "updated_at";');
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
exports.Migration20240604080145 = Migration20240604080145;
|
|
14
|
+
//# sourceMappingURL=Migration20240604080145.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Migration20240604080145.js","sourceRoot":"","sources":["../../src/migrations/Migration20240604080145.ts"],"names":[],"mappings":";;;AAAA,wEAAmE;AAEnE,MAAa,uBAAwB,SAAQ,sBAAS;IACpD,KAAK,CAAC,EAAE;QACN,IAAI,CAAC,MAAM,CACT,2GAA2G,CAC5G,CAAA;IACH,CAAC;IAED,KAAK,CAAC,IAAI;QACR,IAAI,CAAC,MAAM,CACT,qEAAqE,CACtE,CAAA;IACH,CAAC;CACF;AAZD,0DAYC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Migration20241205122700.d.ts","sourceRoot":"","sources":["../../src/migrations/Migration20241205122700.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AAEnE,qBAAa,uBAAwB,SAAQ,SAAS;IAC9C,EAAE,IAAI,OAAO,CAAC,IAAI,CAAC;IAenB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAa5B"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Migration20241205122700 = void 0;
|
|
4
|
+
const migrations_1 = require("@acmekit/framework/mikro-orm/migrations");
|
|
5
|
+
class Migration20241205122700 extends migrations_1.Migration {
|
|
6
|
+
async up() {
|
|
7
|
+
this.addSql('alter table if exists "api_key" add column if not exists "deleted_at" timestamptz null;');
|
|
8
|
+
this.addSql('alter table if exists "api_key" alter column "type" type text using ("type"::text);');
|
|
9
|
+
this.addSql('alter table if exists "api_key" add constraint "api_key_type_check" check ("type" in (\'publishable\', \'secret\'));');
|
|
10
|
+
this.addSql('CREATE INDEX IF NOT EXISTS "IDX_api_key_deleted_at" ON "api_key" (deleted_at) WHERE deleted_at IS NULL;');
|
|
11
|
+
}
|
|
12
|
+
async down() {
|
|
13
|
+
this.addSql('alter table if exists "api_key" drop constraint if exists "api_key_type_check";');
|
|
14
|
+
this.addSql('alter table if exists "api_key" alter column "type" type text using ("type"::text);');
|
|
15
|
+
this.addSql('drop index if exists "IDX_api_key_deleted_at";');
|
|
16
|
+
this.addSql('alter table if exists "api_key" drop column if exists "deleted_at";');
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
exports.Migration20241205122700 = Migration20241205122700;
|
|
20
|
+
//# sourceMappingURL=Migration20241205122700.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Migration20241205122700.js","sourceRoot":"","sources":["../../src/migrations/Migration20241205122700.ts"],"names":[],"mappings":";;;AAAA,wEAAmE;AAEnE,MAAa,uBAAwB,SAAQ,sBAAS;IACpD,KAAK,CAAC,EAAE;QACN,IAAI,CAAC,MAAM,CACT,yFAAyF,CAC1F,CAAA;QACD,IAAI,CAAC,MAAM,CACT,qFAAqF,CACtF,CAAA;QACD,IAAI,CAAC,MAAM,CACT,sHAAsH,CACvH,CAAA;QACD,IAAI,CAAC,MAAM,CACT,yGAAyG,CAC1G,CAAA;IACH,CAAC;IAED,KAAK,CAAC,IAAI;QACR,IAAI,CAAC,MAAM,CACT,iFAAiF,CAClF,CAAA;QAED,IAAI,CAAC,MAAM,CACT,qFAAqF,CACtF,CAAA;QACD,IAAI,CAAC,MAAM,CAAC,gDAAgD,CAAC,CAAA;QAC7D,IAAI,CAAC,MAAM,CACT,qEAAqE,CACtE,CAAA;IACH,CAAC;CACF;AA7BD,0DA6BC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Migration20251015123842.d.ts","sourceRoot":"","sources":["../../src/migrations/Migration20251015123842.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AAEnE,qBAAa,uBAAwB,SAAQ,SAAS;IACrC,EAAE,IAAI,OAAO,CAAC,IAAI,CAAC;IASnB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAIrC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Migration20251015123842 = void 0;
|
|
4
|
+
const migrations_1 = require("@acmekit/framework/mikro-orm/migrations");
|
|
5
|
+
class Migration20251015123842 extends migrations_1.Migration {
|
|
6
|
+
async up() {
|
|
7
|
+
this.addSql(`CREATE INDEX IF NOT EXISTS "IDX_api_key_revoked_at" ON "api_key" (revoked_at) WHERE deleted_at IS NULL;`);
|
|
8
|
+
this.addSql(`CREATE INDEX IF NOT EXISTS "IDX_api_key_redacted" ON "api_key" (redacted) WHERE deleted_at IS NULL;`);
|
|
9
|
+
}
|
|
10
|
+
async down() {
|
|
11
|
+
this.addSql(`drop index if exists "IDX_api_key_revoked_at";`);
|
|
12
|
+
this.addSql(`drop index if exists "IDX_api_key_redacted";`);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
exports.Migration20251015123842 = Migration20251015123842;
|
|
16
|
+
//# sourceMappingURL=Migration20251015123842.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Migration20251015123842.js","sourceRoot":"","sources":["../../src/migrations/Migration20251015123842.ts"],"names":[],"mappings":";;;AAAA,wEAAmE;AAEnE,MAAa,uBAAwB,SAAQ,sBAAS;IAC3C,KAAK,CAAC,EAAE;QACf,IAAI,CAAC,MAAM,CACT,yGAAyG,CAC1G,CAAA;QACD,IAAI,CAAC,MAAM,CACT,qGAAqG,CACtG,CAAA;IACH,CAAC;IAEQ,KAAK,CAAC,IAAI;QACjB,IAAI,CAAC,MAAM,CAAC,gDAAgD,CAAC,CAAA;QAC7D,IAAI,CAAC,MAAM,CAAC,8CAA8C,CAAC,CAAA;IAC7D,CAAC;CACF;AAdD,0DAcC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
declare const ApiKey: import("@acmekit/framework/utils").DmlEntity<import("@acmekit/framework/utils").DMLEntitySchemaBuilder<{
|
|
2
|
+
id: import("@acmekit/framework/utils").PrimaryKeyModifier<string, import("@acmekit/framework/utils").IdProperty>;
|
|
3
|
+
token: import("@acmekit/framework/utils").TextProperty;
|
|
4
|
+
salt: import("@acmekit/framework/utils").TextProperty;
|
|
5
|
+
redacted: import("@acmekit/framework/utils").TextProperty;
|
|
6
|
+
title: import("@acmekit/framework/utils").TextProperty;
|
|
7
|
+
type: import("@acmekit/framework/utils").EnumProperty<["publishable", "secret"]>;
|
|
8
|
+
last_used_at: import("@acmekit/framework/utils").NullableModifier<Date, import("@acmekit/framework/utils").DateTimeProperty>;
|
|
9
|
+
created_by: import("@acmekit/framework/utils").TextProperty;
|
|
10
|
+
revoked_by: import("@acmekit/framework/utils").NullableModifier<string, import("@acmekit/framework/utils").TextProperty>;
|
|
11
|
+
revoked_at: import("@acmekit/framework/utils").NullableModifier<Date, import("@acmekit/framework/utils").DateTimeProperty>;
|
|
12
|
+
}>, "ApiKey">;
|
|
13
|
+
export default ApiKey;
|
|
14
|
+
//# sourceMappingURL=api-key.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api-key.d.ts","sourceRoot":"","sources":["../../src/models/api-key.ts"],"names":[],"mappings":"AAEA,QAAA,MAAM,MAAM;;;;;;;;;;;aA2BR,CAAA;AAEJ,eAAe,MAAM,CAAA"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const utils_1 = require("@acmekit/framework/utils");
|
|
4
|
+
const ApiKey = utils_1.model
|
|
5
|
+
.define("ApiKey", {
|
|
6
|
+
id: utils_1.model.id({ prefix: "apk" }).primaryKey(),
|
|
7
|
+
token: utils_1.model.text(),
|
|
8
|
+
salt: utils_1.model.text(),
|
|
9
|
+
redacted: utils_1.model.text().searchable(),
|
|
10
|
+
title: utils_1.model.text().searchable(),
|
|
11
|
+
type: utils_1.model.enum(["publishable", "secret"]),
|
|
12
|
+
last_used_at: utils_1.model.dateTime().nullable(),
|
|
13
|
+
created_by: utils_1.model.text(),
|
|
14
|
+
revoked_by: utils_1.model.text().nullable(),
|
|
15
|
+
revoked_at: utils_1.model.dateTime().nullable(),
|
|
16
|
+
})
|
|
17
|
+
.indexes([
|
|
18
|
+
{
|
|
19
|
+
on: ["token"],
|
|
20
|
+
unique: true,
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
on: ["revoked_at"],
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
on: ["redacted"],
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
on: ["type"],
|
|
30
|
+
},
|
|
31
|
+
]);
|
|
32
|
+
exports.default = ApiKey;
|
|
33
|
+
//# sourceMappingURL=api-key.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api-key.js","sourceRoot":"","sources":["../../src/models/api-key.ts"],"names":[],"mappings":";;AAAA,oDAAgD;AAEhD,MAAM,MAAM,GAAG,aAAK;KACjB,MAAM,CAAC,QAAQ,EAAE;IAChB,EAAE,EAAE,aAAK,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,UAAU,EAAE;IAC5C,KAAK,EAAE,aAAK,CAAC,IAAI,EAAE;IACnB,IAAI,EAAE,aAAK,CAAC,IAAI,EAAE;IAClB,QAAQ,EAAE,aAAK,CAAC,IAAI,EAAE,CAAC,UAAU,EAAE;IACnC,KAAK,EAAE,aAAK,CAAC,IAAI,EAAE,CAAC,UAAU,EAAE;IAChC,IAAI,EAAE,aAAK,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;IAC3C,YAAY,EAAE,aAAK,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IACzC,UAAU,EAAE,aAAK,CAAC,IAAI,EAAE;IACxB,UAAU,EAAE,aAAK,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE;IACnC,UAAU,EAAE,aAAK,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;CACxC,CAAC;KACD,OAAO,CAAC;IACP;QACE,EAAE,EAAE,CAAC,OAAO,CAAC;QACb,MAAM,EAAE,IAAI;KACb;IACD;QACE,EAAE,EAAE,CAAC,YAAY,CAAC;KACnB;IACD;QACE,EAAE,EAAE,CAAC,UAAU,CAAC;KACjB;IACD;QACE,EAAE,EAAE,CAAC,MAAM,CAAC;KACb;CACF,CAAC,CAAA;AAEJ,kBAAe,MAAM,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/models/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,WAAW,CAAA"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.ApiKey = void 0;
|
|
7
|
+
var api_key_1 = require("./api-key");
|
|
8
|
+
Object.defineProperty(exports, "ApiKey", { enumerable: true, get: function () { return __importDefault(api_key_1).default; } });
|
|
9
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/models/index.ts"],"names":[],"mappings":";;;;;;AAAA,qCAA6C;AAApC,kHAAA,OAAO,OAAU"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { ApiKeyTypes, Context, DAL, FilterableApiKeyProps, FindConfig, IApiKeyModuleService, InferEntityType, InternalModuleDeclaration, ModuleJoinerConfig, ModulesSdkTypes } from "@acmekit/framework/types";
|
|
2
|
+
import { ApiKey } from "../models";
|
|
3
|
+
import { RevokeApiKeyInput, TokenDTO, UpdateApiKeyInput } from "../types";
|
|
4
|
+
type InjectedDependencies = {
|
|
5
|
+
baseRepository: DAL.RepositoryService;
|
|
6
|
+
apiKeyService: ModulesSdkTypes.IAcmeKitInternalService<any>;
|
|
7
|
+
};
|
|
8
|
+
declare const ApiKeyModuleService_base: import("@acmekit/framework/utils").AcmeKitServiceReturnType<{
|
|
9
|
+
ApiKey: {
|
|
10
|
+
dto: ApiKeyTypes.ApiKeyDTO;
|
|
11
|
+
};
|
|
12
|
+
}>;
|
|
13
|
+
export declare class ApiKeyModuleService extends ApiKeyModuleService_base implements IApiKeyModuleService {
|
|
14
|
+
protected readonly moduleDeclaration: InternalModuleDeclaration;
|
|
15
|
+
protected baseRepository_: DAL.RepositoryService;
|
|
16
|
+
protected readonly apiKeyService_: ModulesSdkTypes.IAcmeKitInternalService<InferEntityType<typeof ApiKey>>;
|
|
17
|
+
constructor({ baseRepository, apiKeyService }: InjectedDependencies, moduleDeclaration: InternalModuleDeclaration);
|
|
18
|
+
__joinerConfig(): ModuleJoinerConfig;
|
|
19
|
+
deleteApiKeys(ids: string | string[], sharedContext?: Context): Promise<void>;
|
|
20
|
+
protected deleteApiKeys_(ids: string | string[], sharedContext?: Context): Promise<void>;
|
|
21
|
+
createApiKeys(data: ApiKeyTypes.CreateApiKeyDTO[], sharedContext?: Context): Promise<ApiKeyTypes.ApiKeyDTO[]>;
|
|
22
|
+
createApiKeys(data: ApiKeyTypes.CreateApiKeyDTO, sharedContext?: Context): Promise<ApiKeyTypes.ApiKeyDTO>;
|
|
23
|
+
protected createApiKeys_(data: ApiKeyTypes.CreateApiKeyDTO[], sharedContext?: Context): Promise<[InferEntityType<typeof ApiKey>[], TokenDTO[]]>;
|
|
24
|
+
upsertApiKeys(data: ApiKeyTypes.UpsertApiKeyDTO[], sharedContext?: Context): Promise<ApiKeyTypes.ApiKeyDTO[]>;
|
|
25
|
+
upsertApiKeys(data: ApiKeyTypes.UpsertApiKeyDTO, sharedContext?: Context): Promise<ApiKeyTypes.ApiKeyDTO>;
|
|
26
|
+
protected upsertApiKeys_(data: ApiKeyTypes.UpsertApiKeyDTO | ApiKeyTypes.UpsertApiKeyDTO[], sharedContext?: Context): Promise<ApiKeyTypes.ApiKeyDTO | ApiKeyTypes.ApiKeyDTO[]>;
|
|
27
|
+
updateApiKeys(id: string, data: ApiKeyTypes.UpdateApiKeyDTO, sharedContext?: Context): Promise<ApiKeyTypes.ApiKeyDTO>;
|
|
28
|
+
updateApiKeys(selector: FilterableApiKeyProps, data: ApiKeyTypes.UpdateApiKeyDTO, sharedContext?: Context): Promise<ApiKeyTypes.ApiKeyDTO[]>;
|
|
29
|
+
protected updateApiKeys_(normalizedInput: UpdateApiKeyInput[], sharedContext?: Context): Promise<InferEntityType<typeof ApiKey>[]>;
|
|
30
|
+
retrieveApiKey(id: string, config?: FindConfig<ApiKeyTypes.ApiKeyDTO>, sharedContext?: Context): Promise<ApiKeyTypes.ApiKeyDTO>;
|
|
31
|
+
listApiKeys(filters?: ApiKeyTypes.FilterableApiKeyProps, config?: FindConfig<ApiKeyTypes.ApiKeyDTO>, sharedContext?: Context): Promise<ApiKeyTypes.ApiKeyDTO[]>;
|
|
32
|
+
listAndCountApiKeys(filters?: ApiKeyTypes.FilterableApiKeyProps, config?: FindConfig<ApiKeyTypes.ApiKeyDTO>, sharedContext?: Context): Promise<[ApiKeyTypes.ApiKeyDTO[], number]>;
|
|
33
|
+
revoke(id: string, data: ApiKeyTypes.RevokeApiKeyDTO, sharedContext?: Context): Promise<ApiKeyTypes.ApiKeyDTO>;
|
|
34
|
+
revoke(selector: FilterableApiKeyProps, data: ApiKeyTypes.RevokeApiKeyDTO, sharedContext?: Context): Promise<ApiKeyTypes.ApiKeyDTO[]>;
|
|
35
|
+
revoke_(normalizedInput: RevokeApiKeyInput[], sharedContext?: Context): Promise<InferEntityType<typeof ApiKey>[]>;
|
|
36
|
+
authenticate(token: string, sharedContext?: Context): Promise<ApiKeyTypes.ApiKeyDTO | false>;
|
|
37
|
+
protected authenticate_(token: string, sharedContext?: Context): Promise<InferEntityType<typeof ApiKey> | false>;
|
|
38
|
+
protected normalizeUpdateInput_<T>(idOrSelector: string | FilterableApiKeyProps, data: Omit<T, "id">, sharedContext?: Context): Promise<T[]>;
|
|
39
|
+
protected validateRevokeApiKeys_(data: RevokeApiKeyInput[], sharedContext?: Context): Promise<void>;
|
|
40
|
+
protected static generatePublishableKey(): TokenDTO;
|
|
41
|
+
protected static generateSecretKey(): Promise<TokenDTO>;
|
|
42
|
+
protected static calculateHash(token: string, salt: string): Promise<string>;
|
|
43
|
+
}
|
|
44
|
+
export {};
|
|
45
|
+
//# sourceMappingURL=api-key-module-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api-key-module-service.d.ts","sourceRoot":"","sources":["../../src/services/api-key-module-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,414 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
14
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
15
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
16
|
+
};
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
exports.ApiKeyModuleService = void 0;
|
|
19
|
+
const types_1 = require("@acmekit/framework/types");
|
|
20
|
+
const utils_1 = require("@acmekit/framework/utils");
|
|
21
|
+
const _models_1 = require("../models");
|
|
22
|
+
const crypto_1 = __importDefault(require("crypto"));
|
|
23
|
+
const util_1 = __importDefault(require("util"));
|
|
24
|
+
const joiner_config_1 = require("../joiner-config");
|
|
25
|
+
const scrypt = util_1.default.promisify(crypto_1.default.scrypt);
|
|
26
|
+
class ApiKeyModuleService extends (0, utils_1.AcmeKitService)({ ApiKey: _models_1.ApiKey }) {
|
|
27
|
+
constructor({ baseRepository, apiKeyService }, moduleDeclaration) {
|
|
28
|
+
// @ts-ignore
|
|
29
|
+
super(...arguments);
|
|
30
|
+
this.moduleDeclaration = moduleDeclaration;
|
|
31
|
+
this.baseRepository_ = baseRepository;
|
|
32
|
+
this.apiKeyService_ = apiKeyService;
|
|
33
|
+
}
|
|
34
|
+
__joinerConfig() {
|
|
35
|
+
return joiner_config_1.joinerConfig;
|
|
36
|
+
}
|
|
37
|
+
// @ts-expect-error
|
|
38
|
+
async deleteApiKeys(ids, sharedContext = {}) {
|
|
39
|
+
return await this.deleteApiKeys_(ids, sharedContext);
|
|
40
|
+
}
|
|
41
|
+
async deleteApiKeys_(ids, sharedContext = {}) {
|
|
42
|
+
const apiKeyIds = Array.isArray(ids) ? ids : [ids];
|
|
43
|
+
const unrevokedApiKeys = (await this.apiKeyService_.list({
|
|
44
|
+
id: ids,
|
|
45
|
+
$or: [
|
|
46
|
+
{ revoked_at: { $eq: null } },
|
|
47
|
+
{ revoked_at: { $gt: new Date() } },
|
|
48
|
+
],
|
|
49
|
+
}, { select: ["id"] }, sharedContext)).map((apiKey) => apiKey.id);
|
|
50
|
+
if ((0, utils_1.isPresent)(unrevokedApiKeys)) {
|
|
51
|
+
throw new utils_1.AcmeKitError(utils_1.AcmeKitError.Types.NOT_ALLOWED, `Cannot delete api keys that are not revoked - ${unrevokedApiKeys.join(", ")}`);
|
|
52
|
+
}
|
|
53
|
+
return await super.deleteApiKeys(apiKeyIds, sharedContext);
|
|
54
|
+
}
|
|
55
|
+
//@ts-expect-error
|
|
56
|
+
async createApiKeys(data, sharedContext = {}) {
|
|
57
|
+
const [createdApiKeys, generatedTokens] = await this.createApiKeys_(Array.isArray(data) ? data : [data], sharedContext);
|
|
58
|
+
const serializedResponse = await this.baseRepository_.serialize(createdApiKeys, {
|
|
59
|
+
populate: true,
|
|
60
|
+
});
|
|
61
|
+
// When creating we want to return the raw token, as this will be the only time the user will be able to take note of it for future use.
|
|
62
|
+
const responseWithRawToken = serializedResponse.map((key) => ({
|
|
63
|
+
...key,
|
|
64
|
+
token: generatedTokens.find((t) => t.hashedToken === key.token)?.rawToken ??
|
|
65
|
+
key.token,
|
|
66
|
+
salt: undefined,
|
|
67
|
+
}));
|
|
68
|
+
return Array.isArray(data) ? responseWithRawToken : responseWithRawToken[0];
|
|
69
|
+
}
|
|
70
|
+
async createApiKeys_(data, sharedContext = {}) {
|
|
71
|
+
const normalizedInput = [];
|
|
72
|
+
const generatedTokens = [];
|
|
73
|
+
for (const key of data) {
|
|
74
|
+
let tokenData;
|
|
75
|
+
if (key.type === utils_1.ApiKeyType.PUBLISHABLE) {
|
|
76
|
+
tokenData = ApiKeyModuleService.generatePublishableKey();
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
tokenData = await ApiKeyModuleService.generateSecretKey();
|
|
80
|
+
}
|
|
81
|
+
generatedTokens.push(tokenData);
|
|
82
|
+
normalizedInput.push({
|
|
83
|
+
...key,
|
|
84
|
+
token: tokenData.hashedToken,
|
|
85
|
+
salt: tokenData.salt,
|
|
86
|
+
redacted: tokenData.redacted,
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
const createdApiKeys = await this.apiKeyService_.create(normalizedInput, sharedContext);
|
|
90
|
+
return [createdApiKeys, generatedTokens];
|
|
91
|
+
}
|
|
92
|
+
async upsertApiKeys(data, sharedContext = {}) {
|
|
93
|
+
const result = await this.upsertApiKeys_(data, sharedContext);
|
|
94
|
+
return await this.baseRepository_.serialize(result);
|
|
95
|
+
}
|
|
96
|
+
async upsertApiKeys_(data, sharedContext = {}) {
|
|
97
|
+
const input = Array.isArray(data) ? data : [data];
|
|
98
|
+
const forUpdate = input.filter((apiKey) => !!apiKey.id);
|
|
99
|
+
const forCreate = input.filter((apiKey) => !apiKey.id);
|
|
100
|
+
const operations = [];
|
|
101
|
+
if (forCreate.length) {
|
|
102
|
+
const op = async () => {
|
|
103
|
+
const [createdApiKeys, generatedTokens] = await this.createApiKeys_(forCreate, sharedContext);
|
|
104
|
+
const serializedResponse = await this.baseRepository_.serialize(createdApiKeys);
|
|
105
|
+
return serializedResponse.map((key) => ({
|
|
106
|
+
...key,
|
|
107
|
+
token: generatedTokens.find((t) => t.hashedToken === key.token)
|
|
108
|
+
?.rawToken ?? key.token,
|
|
109
|
+
salt: undefined,
|
|
110
|
+
}));
|
|
111
|
+
};
|
|
112
|
+
operations.push(op());
|
|
113
|
+
}
|
|
114
|
+
if (forUpdate.length) {
|
|
115
|
+
const op = async () => {
|
|
116
|
+
return await this.updateApiKeys_(forUpdate, sharedContext);
|
|
117
|
+
};
|
|
118
|
+
operations.push(op());
|
|
119
|
+
}
|
|
120
|
+
const result = (await (0, utils_1.promiseAll)(operations)).flat();
|
|
121
|
+
return Array.isArray(data) ? result : result[0];
|
|
122
|
+
}
|
|
123
|
+
//@ts-expect-error
|
|
124
|
+
async updateApiKeys(idOrSelector, data, sharedContext = {}) {
|
|
125
|
+
let normalizedInput = await this.normalizeUpdateInput_(idOrSelector, data, sharedContext);
|
|
126
|
+
const updatedApiKeys = await this.updateApiKeys_(normalizedInput, sharedContext);
|
|
127
|
+
const serializedResponse = await this.baseRepository_.serialize(updatedApiKeys.map(omitToken), {
|
|
128
|
+
populate: true,
|
|
129
|
+
});
|
|
130
|
+
return (0, utils_1.isString)(idOrSelector) ? serializedResponse[0] : serializedResponse;
|
|
131
|
+
}
|
|
132
|
+
async updateApiKeys_(normalizedInput, sharedContext = {}) {
|
|
133
|
+
const updateRequest = normalizedInput.map((k) => ({
|
|
134
|
+
id: k.id,
|
|
135
|
+
title: k.title,
|
|
136
|
+
}));
|
|
137
|
+
const updatedApiKeys = await this.apiKeyService_.update(updateRequest, sharedContext);
|
|
138
|
+
return updatedApiKeys;
|
|
139
|
+
}
|
|
140
|
+
// @ts-expect-error
|
|
141
|
+
async retrieveApiKey(id, config, sharedContext) {
|
|
142
|
+
const apiKey = await this.apiKeyService_.retrieve(id, config, sharedContext);
|
|
143
|
+
return await this.baseRepository_.serialize(omitToken(apiKey), {
|
|
144
|
+
populate: true,
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
//@ts-expect-error
|
|
148
|
+
async listApiKeys(filters, config, sharedContext) {
|
|
149
|
+
const apiKeys = await this.apiKeyService_.list(filters, config, sharedContext);
|
|
150
|
+
return await this.baseRepository_.serialize(apiKeys.map(omitToken), {
|
|
151
|
+
populate: true,
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
//@ts-expect-error
|
|
155
|
+
async listAndCountApiKeys(filters, config, sharedContext) {
|
|
156
|
+
const [apiKeys, count] = await this.apiKeyService_.listAndCount(filters, config, sharedContext);
|
|
157
|
+
return [
|
|
158
|
+
await this.baseRepository_.serialize(apiKeys.map(omitToken), {
|
|
159
|
+
populate: true,
|
|
160
|
+
}),
|
|
161
|
+
count,
|
|
162
|
+
];
|
|
163
|
+
}
|
|
164
|
+
async revoke(idOrSelector, data, sharedContext = {}) {
|
|
165
|
+
const normalizedInput = await this.normalizeUpdateInput_(idOrSelector, data, sharedContext);
|
|
166
|
+
const revokedApiKeys = await this.revoke_(normalizedInput, sharedContext);
|
|
167
|
+
const serializedResponse = await this.baseRepository_.serialize(revokedApiKeys.map(omitToken), {
|
|
168
|
+
populate: true,
|
|
169
|
+
});
|
|
170
|
+
return (0, utils_1.isString)(idOrSelector) ? serializedResponse[0] : serializedResponse;
|
|
171
|
+
}
|
|
172
|
+
async revoke_(normalizedInput, sharedContext = {}) {
|
|
173
|
+
await this.validateRevokeApiKeys_(normalizedInput);
|
|
174
|
+
const updateRequest = normalizedInput.map((k) => {
|
|
175
|
+
const revokedAt = new Date();
|
|
176
|
+
if (k.revoke_in && k.revoke_in > 0) {
|
|
177
|
+
revokedAt.setSeconds(revokedAt.getSeconds() + k.revoke_in);
|
|
178
|
+
}
|
|
179
|
+
return {
|
|
180
|
+
id: k.id,
|
|
181
|
+
revoked_at: revokedAt,
|
|
182
|
+
revoked_by: k.revoked_by,
|
|
183
|
+
};
|
|
184
|
+
});
|
|
185
|
+
const revokedApiKeys = await this.apiKeyService_.update(updateRequest, sharedContext);
|
|
186
|
+
return revokedApiKeys;
|
|
187
|
+
}
|
|
188
|
+
async authenticate(token, sharedContext = {}) {
|
|
189
|
+
const result = await this.authenticate_(token, sharedContext);
|
|
190
|
+
if (!result) {
|
|
191
|
+
return false;
|
|
192
|
+
}
|
|
193
|
+
const serialized = await this.baseRepository_.serialize(result, {
|
|
194
|
+
populate: true,
|
|
195
|
+
});
|
|
196
|
+
return serialized;
|
|
197
|
+
}
|
|
198
|
+
async authenticate_(token, sharedContext = {}) {
|
|
199
|
+
const secretKeys = await this.apiKeyService_.list({
|
|
200
|
+
type: utils_1.ApiKeyType.SECRET,
|
|
201
|
+
// There could be many unrevoked keys at the same time, so we narrow the list down by the redacted key.
|
|
202
|
+
// Note that the redacted key doesn't guarantee uniqueness and is not an authentication check, but just an optimization.
|
|
203
|
+
redacted: redactKey(token),
|
|
204
|
+
// If the revoke date is set in the future, it means the key is still valid.
|
|
205
|
+
$or: [
|
|
206
|
+
{ revoked_at: { $eq: null } },
|
|
207
|
+
{ revoked_at: { $gt: new Date() } },
|
|
208
|
+
],
|
|
209
|
+
}, {
|
|
210
|
+
take: undefined,
|
|
211
|
+
}, sharedContext);
|
|
212
|
+
const matches = await (0, utils_1.promiseAll)(secretKeys.map(async (dbKey) => {
|
|
213
|
+
const hashedInput = await ApiKeyModuleService.calculateHash(token, dbKey.salt);
|
|
214
|
+
if (hashedInput === dbKey.token) {
|
|
215
|
+
return dbKey;
|
|
216
|
+
}
|
|
217
|
+
return undefined;
|
|
218
|
+
}));
|
|
219
|
+
const matchedKeys = matches.filter((match) => !!match);
|
|
220
|
+
if (!matchedKeys.length) {
|
|
221
|
+
return false;
|
|
222
|
+
}
|
|
223
|
+
return matchedKeys[0];
|
|
224
|
+
}
|
|
225
|
+
async normalizeUpdateInput_(idOrSelector, data, sharedContext = {}) {
|
|
226
|
+
let normalizedInput = [];
|
|
227
|
+
if ((0, utils_1.isString)(idOrSelector)) {
|
|
228
|
+
normalizedInput = [{ id: idOrSelector, ...data }];
|
|
229
|
+
}
|
|
230
|
+
if ((0, utils_1.isObject)(idOrSelector)) {
|
|
231
|
+
const apiKeys = await this.apiKeyService_.list(idOrSelector, {}, sharedContext);
|
|
232
|
+
normalizedInput = apiKeys.map((apiKey) => ({
|
|
233
|
+
id: apiKey.id,
|
|
234
|
+
...data,
|
|
235
|
+
}));
|
|
236
|
+
}
|
|
237
|
+
return normalizedInput;
|
|
238
|
+
}
|
|
239
|
+
async validateRevokeApiKeys_(data, sharedContext = {}) {
|
|
240
|
+
if (!data.length) {
|
|
241
|
+
return;
|
|
242
|
+
}
|
|
243
|
+
if (data.some((k) => !k.id)) {
|
|
244
|
+
throw new utils_1.AcmeKitError(utils_1.AcmeKitError.Types.INVALID_DATA, `You must provide an api key id field when revoking a key.`);
|
|
245
|
+
}
|
|
246
|
+
if (data.some((k) => !k.revoked_by)) {
|
|
247
|
+
throw new utils_1.AcmeKitError(utils_1.AcmeKitError.Types.INVALID_DATA, `You must provide a revoked_by field when revoking a key.`);
|
|
248
|
+
}
|
|
249
|
+
const revokedApiKeys = await this.apiKeyService_.list({
|
|
250
|
+
id: data.map((k) => k.id),
|
|
251
|
+
type: utils_1.ApiKeyType.SECRET,
|
|
252
|
+
revoked_at: { $lt: new Date() },
|
|
253
|
+
}, {}, sharedContext);
|
|
254
|
+
if (revokedApiKeys.length) {
|
|
255
|
+
throw new utils_1.AcmeKitError(utils_1.AcmeKitError.Types.INVALID_DATA, `There are ${revokedApiKeys.length} secret keys that are already revoked.`);
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
// These are public keys, so there is no point hashing them.
|
|
259
|
+
static generatePublishableKey() {
|
|
260
|
+
const token = "pk_" + crypto_1.default.randomBytes(32).toString("hex");
|
|
261
|
+
return {
|
|
262
|
+
rawToken: token,
|
|
263
|
+
hashedToken: token,
|
|
264
|
+
salt: "",
|
|
265
|
+
redacted: redactKey(token),
|
|
266
|
+
};
|
|
267
|
+
}
|
|
268
|
+
static async generateSecretKey() {
|
|
269
|
+
const token = "sk_" + crypto_1.default.randomBytes(32).toString("hex");
|
|
270
|
+
const salt = crypto_1.default.randomBytes(16).toString("hex");
|
|
271
|
+
const hashed = await this.calculateHash(token, salt);
|
|
272
|
+
return {
|
|
273
|
+
rawToken: token,
|
|
274
|
+
hashedToken: hashed,
|
|
275
|
+
salt,
|
|
276
|
+
redacted: redactKey(token),
|
|
277
|
+
};
|
|
278
|
+
}
|
|
279
|
+
static async calculateHash(token, salt) {
|
|
280
|
+
return (await scrypt(token, salt, 64)).toString("hex");
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
exports.ApiKeyModuleService = ApiKeyModuleService;
|
|
284
|
+
__decorate([
|
|
285
|
+
(0, utils_1.InjectManager)(),
|
|
286
|
+
(0, utils_1.EmitEvents)()
|
|
287
|
+
// @ts-expect-error
|
|
288
|
+
,
|
|
289
|
+
__param(1, (0, utils_1.AcmeKitContext)()),
|
|
290
|
+
__metadata("design:type", Function),
|
|
291
|
+
__metadata("design:paramtypes", [Object, Object]),
|
|
292
|
+
__metadata("design:returntype", Promise)
|
|
293
|
+
], ApiKeyModuleService.prototype, "deleteApiKeys", null);
|
|
294
|
+
__decorate([
|
|
295
|
+
(0, utils_1.InjectTransactionManager)(),
|
|
296
|
+
__param(1, (0, utils_1.AcmeKitContext)()),
|
|
297
|
+
__metadata("design:type", Function),
|
|
298
|
+
__metadata("design:paramtypes", [Object, Object]),
|
|
299
|
+
__metadata("design:returntype", Promise)
|
|
300
|
+
], ApiKeyModuleService.prototype, "deleteApiKeys_", null);
|
|
301
|
+
__decorate([
|
|
302
|
+
(0, utils_1.InjectManager)(),
|
|
303
|
+
(0, utils_1.EmitEvents)()
|
|
304
|
+
//@ts-expect-error
|
|
305
|
+
,
|
|
306
|
+
__param(1, (0, utils_1.AcmeKitContext)()),
|
|
307
|
+
__metadata("design:type", Function),
|
|
308
|
+
__metadata("design:paramtypes", [Object, Object]),
|
|
309
|
+
__metadata("design:returntype", Promise)
|
|
310
|
+
], ApiKeyModuleService.prototype, "createApiKeys", null);
|
|
311
|
+
__decorate([
|
|
312
|
+
(0, utils_1.InjectTransactionManager)(),
|
|
313
|
+
__param(1, (0, utils_1.AcmeKitContext)()),
|
|
314
|
+
__metadata("design:type", Function),
|
|
315
|
+
__metadata("design:paramtypes", [Array, Object]),
|
|
316
|
+
__metadata("design:returntype", Promise)
|
|
317
|
+
], ApiKeyModuleService.prototype, "createApiKeys_", null);
|
|
318
|
+
__decorate([
|
|
319
|
+
(0, utils_1.InjectManager)(),
|
|
320
|
+
(0, utils_1.EmitEvents)(),
|
|
321
|
+
__param(1, (0, utils_1.AcmeKitContext)()),
|
|
322
|
+
__metadata("design:type", Function),
|
|
323
|
+
__metadata("design:paramtypes", [Object, Object]),
|
|
324
|
+
__metadata("design:returntype", Promise)
|
|
325
|
+
], ApiKeyModuleService.prototype, "upsertApiKeys", null);
|
|
326
|
+
__decorate([
|
|
327
|
+
(0, utils_1.InjectTransactionManager)(),
|
|
328
|
+
__param(1, (0, utils_1.AcmeKitContext)()),
|
|
329
|
+
__metadata("design:type", Function),
|
|
330
|
+
__metadata("design:paramtypes", [Object, Object]),
|
|
331
|
+
__metadata("design:returntype", Promise)
|
|
332
|
+
], ApiKeyModuleService.prototype, "upsertApiKeys_", null);
|
|
333
|
+
__decorate([
|
|
334
|
+
(0, utils_1.InjectManager)(),
|
|
335
|
+
(0, utils_1.EmitEvents)()
|
|
336
|
+
//@ts-expect-error
|
|
337
|
+
,
|
|
338
|
+
__param(2, (0, utils_1.AcmeKitContext)()),
|
|
339
|
+
__metadata("design:type", Function),
|
|
340
|
+
__metadata("design:paramtypes", [Object, Object, Object]),
|
|
341
|
+
__metadata("design:returntype", Promise)
|
|
342
|
+
], ApiKeyModuleService.prototype, "updateApiKeys", null);
|
|
343
|
+
__decorate([
|
|
344
|
+
(0, utils_1.InjectTransactionManager)(),
|
|
345
|
+
__param(1, (0, utils_1.AcmeKitContext)()),
|
|
346
|
+
__metadata("design:type", Function),
|
|
347
|
+
__metadata("design:paramtypes", [Array, Object]),
|
|
348
|
+
__metadata("design:returntype", Promise)
|
|
349
|
+
], ApiKeyModuleService.prototype, "updateApiKeys_", null);
|
|
350
|
+
__decorate([
|
|
351
|
+
(0, utils_1.InjectManager)()
|
|
352
|
+
// @ts-expect-error
|
|
353
|
+
,
|
|
354
|
+
__metadata("design:type", Function),
|
|
355
|
+
__metadata("design:paramtypes", [String, Object, Object]),
|
|
356
|
+
__metadata("design:returntype", Promise)
|
|
357
|
+
], ApiKeyModuleService.prototype, "retrieveApiKey", null);
|
|
358
|
+
__decorate([
|
|
359
|
+
(0, utils_1.InjectManager)()
|
|
360
|
+
//@ts-expect-error
|
|
361
|
+
,
|
|
362
|
+
__metadata("design:type", Function),
|
|
363
|
+
__metadata("design:paramtypes", [Object, Object, Object]),
|
|
364
|
+
__metadata("design:returntype", Promise)
|
|
365
|
+
], ApiKeyModuleService.prototype, "listApiKeys", null);
|
|
366
|
+
__decorate([
|
|
367
|
+
(0, utils_1.InjectManager)()
|
|
368
|
+
//@ts-expect-error
|
|
369
|
+
,
|
|
370
|
+
__metadata("design:type", Function),
|
|
371
|
+
__metadata("design:paramtypes", [Object, Object, Object]),
|
|
372
|
+
__metadata("design:returntype", Promise)
|
|
373
|
+
], ApiKeyModuleService.prototype, "listAndCountApiKeys", null);
|
|
374
|
+
__decorate([
|
|
375
|
+
(0, utils_1.InjectManager)(),
|
|
376
|
+
(0, utils_1.EmitEvents)(),
|
|
377
|
+
__param(2, (0, utils_1.AcmeKitContext)()),
|
|
378
|
+
__metadata("design:type", Function),
|
|
379
|
+
__metadata("design:paramtypes", [Object, Object, Object]),
|
|
380
|
+
__metadata("design:returntype", Promise)
|
|
381
|
+
], ApiKeyModuleService.prototype, "revoke", null);
|
|
382
|
+
__decorate([
|
|
383
|
+
(0, utils_1.InjectTransactionManager)(),
|
|
384
|
+
__param(1, (0, utils_1.AcmeKitContext)()),
|
|
385
|
+
__metadata("design:type", Function),
|
|
386
|
+
__metadata("design:paramtypes", [Array, Object]),
|
|
387
|
+
__metadata("design:returntype", Promise)
|
|
388
|
+
], ApiKeyModuleService.prototype, "revoke_", null);
|
|
389
|
+
__decorate([
|
|
390
|
+
(0, utils_1.InjectManager)(),
|
|
391
|
+
__param(1, (0, utils_1.AcmeKitContext)()),
|
|
392
|
+
__metadata("design:type", Function),
|
|
393
|
+
__metadata("design:paramtypes", [String, Object]),
|
|
394
|
+
__metadata("design:returntype", Promise)
|
|
395
|
+
], ApiKeyModuleService.prototype, "authenticate", null);
|
|
396
|
+
__decorate([
|
|
397
|
+
(0, utils_1.InjectTransactionManager)(),
|
|
398
|
+
__param(1, (0, utils_1.AcmeKitContext)()),
|
|
399
|
+
__metadata("design:type", Function),
|
|
400
|
+
__metadata("design:paramtypes", [String, Object]),
|
|
401
|
+
__metadata("design:returntype", Promise)
|
|
402
|
+
], ApiKeyModuleService.prototype, "authenticate_", null);
|
|
403
|
+
// We are mutating the object here as what microORM relies on non-enumerable fields for serialization, among other things.
|
|
404
|
+
const omitToken = (
|
|
405
|
+
// We have to make salt optional before deleting it (and we do want it required in the DB)
|
|
406
|
+
key) => {
|
|
407
|
+
key.token = key.type === utils_1.ApiKeyType.SECRET ? "" : key.token;
|
|
408
|
+
delete key.salt;
|
|
409
|
+
return key;
|
|
410
|
+
};
|
|
411
|
+
const redactKey = (key) => {
|
|
412
|
+
return [key.slice(0, 6), key.slice(-3)].join("***");
|
|
413
|
+
};
|
|
414
|
+
//# sourceMappingURL=api-key-module-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api-key-module-service.js","sourceRoot":"","sources":["../../src/services/api-key-module-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ApiKeyModuleService = void 0;
|
|
4
|
+
var api_key_module_service_1 = require("./api-key-module-service");
|
|
5
|
+
Object.defineProperty(exports, "ApiKeyModuleService", { enumerable: true, get: function () { return api_key_module_service_1.ApiKeyModuleService; } });
|
|
6
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":";;;AAAA,mEAA8D;AAArD,6HAAA,mBAAmB,OAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"root":["../src/index.ts","../src/joiner-config.ts","../src/migrations/initialsetup20240221144943.ts","../src/migrations/migration20240604080145.ts","../src/migrations/migration20241205122700.ts","../src/migrations/migration20251015123842.ts","../src/models/api-key.ts","../src/models/index.ts","../src/services/api-key-module-service.ts","../src/services/index.ts","../src/services/__tests__/noop.ts","../src/types/index.ts"],"version":"5.9.3"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { ApiKeyType, IEventBusModuleService, Logger, RevokeApiKeyDTO, UpdateApiKeyDTO } from "@acmekit/framework/types";
|
|
2
|
+
export type InitializeModuleInjectableDependencies = {
|
|
3
|
+
logger?: Logger;
|
|
4
|
+
EventBus?: IEventBusModuleService;
|
|
5
|
+
};
|
|
6
|
+
export type CreateApiKeyDTO = {
|
|
7
|
+
token: string;
|
|
8
|
+
salt: string;
|
|
9
|
+
redacted: string;
|
|
10
|
+
title: string;
|
|
11
|
+
type: ApiKeyType;
|
|
12
|
+
created_by: string;
|
|
13
|
+
};
|
|
14
|
+
export type TokenDTO = {
|
|
15
|
+
rawToken: string;
|
|
16
|
+
hashedToken: string;
|
|
17
|
+
salt: string;
|
|
18
|
+
redacted: string;
|
|
19
|
+
};
|
|
20
|
+
export type UpdateApiKeyInput = UpdateApiKeyDTO & {
|
|
21
|
+
id: string;
|
|
22
|
+
};
|
|
23
|
+
export type RevokeApiKeyInput = RevokeApiKeyDTO & {
|
|
24
|
+
id: string;
|
|
25
|
+
};
|
|
26
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,sBAAsB,EACtB,MAAM,EACN,eAAe,EACf,eAAe,EAChB,MAAM,0BAA0B,CAAA;AAEjC,MAAM,MAAM,sCAAsC,GAAG;IACnD,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,sBAAsB,CAAA;CAClC,CAAA;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,UAAU,CAAA;IAChB,UAAU,EAAE,MAAM,CAAA;CACnB,CAAA;AAED,MAAM,MAAM,QAAQ,GAAG;IACrB,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,MAAM,CAAA;IACnB,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;CACjB,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG,eAAe,GAAG;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,CAAA;AAChE,MAAM,MAAM,iBAAiB,GAAG,eAAe,GAAG;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":""}
|
package/package.json
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@acmekit/api-key",
|
|
3
|
+
"version": "2.13.1",
|
|
4
|
+
"description": "AcmeKit API Key module",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"types": "dist/index.d.ts",
|
|
7
|
+
"files": [
|
|
8
|
+
"dist",
|
|
9
|
+
"!dist/**/__tests__",
|
|
10
|
+
"!dist/**/__mocks__",
|
|
11
|
+
"!dist/**/__fixtures__"
|
|
12
|
+
],
|
|
13
|
+
"engines": {
|
|
14
|
+
"node": ">=20"
|
|
15
|
+
},
|
|
16
|
+
"repository": {
|
|
17
|
+
"type": "git",
|
|
18
|
+
"url": "https://github.com/acmekit/acmekit",
|
|
19
|
+
"directory": "packages/modules/api-key"
|
|
20
|
+
},
|
|
21
|
+
"publishConfig": {
|
|
22
|
+
"access": "public"
|
|
23
|
+
},
|
|
24
|
+
"author": "AcmeKit",
|
|
25
|
+
"license": "MIT",
|
|
26
|
+
"scripts": {
|
|
27
|
+
"watch": "yarn run -T tsc --build --watch",
|
|
28
|
+
"watch:test": "yarn run -T tsc --build tsconfig.spec.json --watch",
|
|
29
|
+
"resolve:aliases": "yarn run -T tsc --showConfig -p tsconfig.json > tsconfig.resolved.json && yarn run -T tsc-alias -p tsconfig.resolved.json && yarn run -T rimraf tsconfig.resolved.json",
|
|
30
|
+
"build": "yarn run -T rimraf dist && yarn run -T tsc --build && npm run resolve:aliases",
|
|
31
|
+
"test": "../../../node_modules/.bin/jest --bail --forceExit --testPathPattern=src",
|
|
32
|
+
"test:integration": "../../../node_modules/.bin/jest --passWithNoTests --forceExit --testPathPattern=\"integration-tests/__tests__/.*\\.ts\"",
|
|
33
|
+
"migration:initial": "MIKRO_ORM_CLI_CONFIG=./mikro-orm.config.dev.ts MIKRO_ORM_ALLOW_GLOBAL_CLI=true acmekit-mikro-orm migration:create --initial",
|
|
34
|
+
"migration:create": "MIKRO_ORM_CLI_CONFIG=./mikro-orm.config.dev.ts MIKRO_ORM_ALLOW_GLOBAL_CLI=true acmekit-mikro-orm migration:create",
|
|
35
|
+
"migration:up": "MIKRO_ORM_CLI_CONFIG=./mikro-orm.config.dev.ts MIKRO_ORM_ALLOW_GLOBAL_CLI=true acmekit-mikro-orm migration:up",
|
|
36
|
+
"orm:cache:clear": "MIKRO_ORM_CLI_CONFIG=./mikro-orm.config.dev.ts MIKRO_ORM_ALLOW_GLOBAL_CLI=true acmekit-mikro-orm cache:clear"
|
|
37
|
+
},
|
|
38
|
+
"devDependencies": {
|
|
39
|
+
"@acmekit/framework": "2.13.1",
|
|
40
|
+
"@acmekit/test-utils": "2.13.1"
|
|
41
|
+
},
|
|
42
|
+
"peerDependencies": {
|
|
43
|
+
"@acmekit/framework": "2.13.1"
|
|
44
|
+
}
|
|
45
|
+
}
|