@cheqd/studio 3.15.0-develop.1 → 3.15.0-develop.3
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/app.d.ts.map +1 -1
- package/dist/app.js +4 -0
- package/dist/app.js.map +1 -1
- package/dist/controllers/api/accreditation.d.ts.map +1 -1
- package/dist/controllers/api/accreditation.js +36 -9
- package/dist/controllers/api/accreditation.js.map +1 -1
- package/dist/controllers/api/credential-status.d.ts +94 -0
- package/dist/controllers/api/credential-status.d.ts.map +1 -1
- package/dist/controllers/api/credential-status.js +220 -506
- package/dist/controllers/api/credential-status.js.map +1 -1
- package/dist/controllers/api/credential.d.ts +66 -0
- package/dist/controllers/api/credential.d.ts.map +1 -1
- package/dist/controllers/api/credential.js +117 -1
- package/dist/controllers/api/credential.js.map +1 -1
- package/dist/controllers/api/did.js.map +1 -1
- package/dist/controllers/api/key.d.ts +71 -1
- package/dist/controllers/api/key.d.ts.map +1 -1
- package/dist/controllers/api/key.js +113 -2
- package/dist/controllers/api/key.js.map +1 -1
- package/dist/controllers/api/presentation.js +22 -21
- package/dist/controllers/api/presentation.js.map +1 -1
- package/dist/controllers/api/providers.controller.js.map +1 -1
- package/dist/controllers/api/resource.js.map +1 -1
- package/dist/controllers/validator/did.js +1 -1
- package/dist/controllers/validator/did.js.map +1 -1
- package/dist/database/entities/issued-credential.entity.d.ts +10 -1
- package/dist/database/entities/issued-credential.entity.d.ts.map +1 -1
- package/dist/database/entities/issued-credential.entity.js +22 -0
- package/dist/database/entities/issued-credential.entity.js.map +1 -1
- package/dist/database/entities/status-registry.entity.d.ts +60 -0
- package/dist/database/entities/status-registry.entity.d.ts.map +1 -0
- package/dist/database/entities/status-registry.entity.js +145 -0
- package/dist/database/entities/status-registry.entity.js.map +1 -0
- package/dist/database/migrations/1761834657128-studio-migrations.d.ts +7 -0
- package/dist/database/migrations/1761834657128-studio-migrations.d.ts.map +1 -0
- package/dist/database/migrations/1761834657128-studio-migrations.js +14 -0
- package/dist/database/migrations/1761834657128-studio-migrations.js.map +1 -0
- package/dist/database/migrations/1762775396083-MigrateStatusLists.d.ts +25 -0
- package/dist/database/migrations/1762775396083-MigrateStatusLists.d.ts.map +1 -0
- package/dist/database/migrations/1762775396083-MigrateStatusLists.js +243 -0
- package/dist/database/migrations/1762775396083-MigrateStatusLists.js.map +1 -0
- package/dist/database/migrations/1762775500000-UpdateWriteCursors.d.ts +23 -0
- package/dist/database/migrations/1762775500000-UpdateWriteCursors.d.ts.map +1 -0
- package/dist/database/migrations/1762775500000-UpdateWriteCursors.js +181 -0
- package/dist/database/migrations/1762775500000-UpdateWriteCursors.js.map +1 -0
- package/dist/database/types/types.d.ts.map +1 -1
- package/dist/database/types/types.js +10 -0
- package/dist/database/types/types.js.map +1 -1
- package/dist/helpers/mailchimp.d.ts.map +1 -1
- package/dist/helpers/mailchimp.js +1 -3
- package/dist/helpers/mailchimp.js.map +1 -1
- package/dist/middleware/auth/routes/api/credential-status-auth.d.ts.map +1 -1
- package/dist/middleware/auth/routes/api/credential-status-auth.js +2 -0
- package/dist/middleware/auth/routes/api/credential-status-auth.js.map +1 -1
- package/dist/middleware/auth/routes/api/key-auth.d.ts.map +1 -1
- package/dist/middleware/auth/routes/api/key-auth.js +1 -0
- package/dist/middleware/auth/routes/api/key-auth.js.map +1 -1
- package/dist/services/api/credential-status.d.ts +107 -0
- package/dist/services/api/credential-status.d.ts.map +1 -0
- package/dist/services/api/credential-status.js +923 -0
- package/dist/services/api/credential-status.js.map +1 -0
- package/dist/services/api/credentials.d.ts +12 -0
- package/dist/services/api/credentials.d.ts.map +1 -1
- package/dist/services/api/credentials.js +330 -117
- package/dist/services/api/credentials.js.map +1 -1
- package/dist/services/connectors/resource.js.map +1 -1
- package/dist/services/identity/abstract.d.ts +1 -1
- package/dist/services/identity/abstract.d.ts.map +1 -1
- package/dist/services/identity/abstract.js +1 -1
- package/dist/services/identity/abstract.js.map +1 -1
- package/dist/services/identity/default.d.ts +1 -1
- package/dist/services/identity/default.d.ts.map +1 -1
- package/dist/services/identity/default.js +2 -2
- package/dist/services/identity/default.js.map +1 -1
- package/dist/services/identity/index.d.ts +1 -1
- package/dist/services/identity/index.d.ts.map +1 -1
- package/dist/services/identity/providers/studio/agent.d.ts +6 -6
- package/dist/services/identity/providers/studio/agent.d.ts.map +1 -1
- package/dist/services/identity/providers/studio/agent.js +11 -2
- package/dist/services/identity/providers/studio/agent.js.map +1 -1
- package/dist/services/identity/providers/studio/local.d.ts +3 -3
- package/dist/services/identity/providers/studio/postgres.d.ts +3 -3
- package/dist/services/identity/providers/studio/postgres.d.ts.map +1 -1
- package/dist/services/identity/providers/studio/postgres.js +0 -12
- package/dist/services/identity/providers/studio/postgres.js.map +1 -1
- package/dist/services/track/api/credential-status-subscriber.d.ts +4 -4
- package/dist/services/track/api/credential-status-subscriber.d.ts.map +1 -1
- package/dist/services/track/api/credential-status-subscriber.js +18 -1
- package/dist/services/track/api/credential-status-subscriber.js.map +1 -1
- package/dist/services/track/api/credential-subscriber.d.ts +4 -4
- package/dist/services/track/api/credential-subscriber.d.ts.map +1 -1
- package/dist/services/track/api/credential-subscriber.js.map +1 -1
- package/dist/services/track/api/did-subscriber.d.ts +4 -4
- package/dist/services/track/api/did-subscriber.d.ts.map +1 -1
- package/dist/services/track/api/did-subscriber.js.map +1 -1
- package/dist/services/track/api/key-subscriber.d.ts +4 -4
- package/dist/services/track/api/key-subscriber.d.ts.map +1 -1
- package/dist/services/track/api/key-subscriber.js.map +1 -1
- package/dist/services/track/api/presentation-subscriber.d.ts +4 -4
- package/dist/services/track/api/presentation-subscriber.d.ts.map +1 -1
- package/dist/services/track/api/presentation-subscriber.js.map +1 -1
- package/dist/services/track/api/resource-subscriber.d.ts +4 -4
- package/dist/services/track/api/resource-subscriber.d.ts.map +1 -1
- package/dist/services/track/api/resource-subscriber.js.map +1 -1
- package/dist/services/track/base.d.ts +2 -2
- package/dist/services/track/base.d.ts.map +1 -1
- package/dist/services/track/base.js.map +1 -1
- package/dist/services/track/operation-subscriber.d.ts +4 -4
- package/dist/services/track/operation-subscriber.d.ts.map +1 -1
- package/dist/services/track/operation-subscriber.js.map +1 -1
- package/dist/services/track/tracker.d.ts +2 -2
- package/dist/services/track/tracker.d.ts.map +1 -1
- package/dist/services/track/tracker.js.map +1 -1
- package/dist/services/track/types.d.ts +2 -2
- package/dist/services/track/types.d.ts.map +1 -1
- package/dist/static/swagger-api.json +684 -67
- package/dist/types/accreditation.d.ts +3 -0
- package/dist/types/accreditation.d.ts.map +1 -1
- package/dist/types/constants.d.ts +2 -0
- package/dist/types/constants.d.ts.map +1 -1
- package/dist/types/constants.js +2 -0
- package/dist/types/constants.js.map +1 -1
- package/dist/types/credential-status.d.ts +39 -1
- package/dist/types/credential-status.d.ts.map +1 -1
- package/dist/types/credential-status.js +7 -0
- package/dist/types/credential-status.js.map +1 -1
- package/dist/types/credential.d.ts +21 -3
- package/dist/types/credential.d.ts.map +1 -1
- package/dist/types/credential.js +5 -0
- package/dist/types/credential.js.map +1 -1
- package/dist/types/swagger-api-types.d.ts +242 -39
- package/dist/types/swagger-api-types.d.ts.map +1 -1
- package/dist/types/swagger-api-types.js +242 -39
- package/dist/types/swagger-api-types.js.map +1 -1
- package/dist/types/track.d.ts +8 -6
- package/dist/types/track.d.ts.map +1 -1
- package/dist/types/track.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
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;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
import { Entity, Column, CreateDateColumn, UpdateDateColumn, PrimaryColumn, BeforeInsert, ManyToOne, JoinColumn, } from 'typeorm';
|
|
8
|
+
import { v4 as uuidv4 } from 'uuid';
|
|
9
|
+
import { Identifier } from '@veramo/data-store';
|
|
10
|
+
import { CustomerEntity } from './customer.entity.js';
|
|
11
|
+
/**
|
|
12
|
+
* Status Registry entity for managing credential status registries
|
|
13
|
+
*/
|
|
14
|
+
let StatusRegistryEntity = class StatusRegistryEntity {
|
|
15
|
+
registryId;
|
|
16
|
+
uri;
|
|
17
|
+
prev_uri;
|
|
18
|
+
next_uri;
|
|
19
|
+
registryType;
|
|
20
|
+
storageType;
|
|
21
|
+
registryName;
|
|
22
|
+
encrypted;
|
|
23
|
+
credentialCategory;
|
|
24
|
+
version;
|
|
25
|
+
registrySize;
|
|
26
|
+
writeCursor;
|
|
27
|
+
threshold_percentage;
|
|
28
|
+
state;
|
|
29
|
+
sealedAt;
|
|
30
|
+
sealedCommitment;
|
|
31
|
+
metadata;
|
|
32
|
+
createdAt;
|
|
33
|
+
updatedAt;
|
|
34
|
+
deprecated;
|
|
35
|
+
identifier;
|
|
36
|
+
// Relations
|
|
37
|
+
customer;
|
|
38
|
+
addId() {
|
|
39
|
+
if (!this.registryId) {
|
|
40
|
+
this.registryId = uuidv4();
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
constructor(options) {
|
|
44
|
+
if (!options) {
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
if (options.registryId) {
|
|
48
|
+
this.registryId = options.registryId;
|
|
49
|
+
}
|
|
50
|
+
this.uri = options.uri;
|
|
51
|
+
this.registryType = options.registryType;
|
|
52
|
+
this.registryName = options.registryName;
|
|
53
|
+
this.credentialCategory = options.credentialCategory;
|
|
54
|
+
this.version = options.version;
|
|
55
|
+
this.registrySize = options.registrySize;
|
|
56
|
+
this.writeCursor = options.writeCursor;
|
|
57
|
+
this.state = options.state;
|
|
58
|
+
this.storageType = options.storageType || 'cheqd';
|
|
59
|
+
this.metadata = options.metadata;
|
|
60
|
+
this.deprecated = options.deprecated || false;
|
|
61
|
+
this.encrypted = options.encrypted || false;
|
|
62
|
+
this.prev_uri = options.prev_uri;
|
|
63
|
+
this.next_uri = options.next_uri;
|
|
64
|
+
this.threshold_percentage = options.threshold_percentage || 80;
|
|
65
|
+
this.identifier = options.identifier;
|
|
66
|
+
this.customer = options.customer;
|
|
67
|
+
this.createdAt = options.createdAt || new Date();
|
|
68
|
+
}
|
|
69
|
+
};
|
|
70
|
+
__decorate([
|
|
71
|
+
PrimaryColumn({ type: 'varchar', nullable: false })
|
|
72
|
+
], StatusRegistryEntity.prototype, "registryId", void 0);
|
|
73
|
+
__decorate([
|
|
74
|
+
Column({ type: 'varchar', nullable: false })
|
|
75
|
+
], StatusRegistryEntity.prototype, "uri", void 0);
|
|
76
|
+
__decorate([
|
|
77
|
+
Column({ type: 'varchar', nullable: true })
|
|
78
|
+
], StatusRegistryEntity.prototype, "prev_uri", void 0);
|
|
79
|
+
__decorate([
|
|
80
|
+
Column({ type: 'varchar', nullable: true })
|
|
81
|
+
], StatusRegistryEntity.prototype, "next_uri", void 0);
|
|
82
|
+
__decorate([
|
|
83
|
+
Column({ type: 'text', nullable: false })
|
|
84
|
+
], StatusRegistryEntity.prototype, "registryType", void 0);
|
|
85
|
+
__decorate([
|
|
86
|
+
Column({ type: 'text', nullable: false })
|
|
87
|
+
], StatusRegistryEntity.prototype, "storageType", void 0);
|
|
88
|
+
__decorate([
|
|
89
|
+
Column({ type: 'varchar', nullable: false })
|
|
90
|
+
], StatusRegistryEntity.prototype, "registryName", void 0);
|
|
91
|
+
__decorate([
|
|
92
|
+
Column('boolean', { default: false })
|
|
93
|
+
], StatusRegistryEntity.prototype, "encrypted", void 0);
|
|
94
|
+
__decorate([
|
|
95
|
+
Column({ type: 'varchar', nullable: false })
|
|
96
|
+
], StatusRegistryEntity.prototype, "credentialCategory", void 0);
|
|
97
|
+
__decorate([
|
|
98
|
+
Column({ type: 'integer', nullable: false, default: 0 })
|
|
99
|
+
], StatusRegistryEntity.prototype, "version", void 0);
|
|
100
|
+
__decorate([
|
|
101
|
+
Column({ type: 'integer', nullable: false, default: 131072 })
|
|
102
|
+
], StatusRegistryEntity.prototype, "registrySize", void 0);
|
|
103
|
+
__decorate([
|
|
104
|
+
Column({ type: 'integer', nullable: false, default: 0 })
|
|
105
|
+
], StatusRegistryEntity.prototype, "writeCursor", void 0);
|
|
106
|
+
__decorate([
|
|
107
|
+
Column({ type: 'integer', nullable: false, default: 80 })
|
|
108
|
+
], StatusRegistryEntity.prototype, "threshold_percentage", void 0);
|
|
109
|
+
__decorate([
|
|
110
|
+
Column({ type: 'varchar', nullable: false })
|
|
111
|
+
], StatusRegistryEntity.prototype, "state", void 0);
|
|
112
|
+
__decorate([
|
|
113
|
+
Column({ type: 'timestamptz', nullable: true })
|
|
114
|
+
], StatusRegistryEntity.prototype, "sealedAt", void 0);
|
|
115
|
+
__decorate([
|
|
116
|
+
Column({ type: 'varchar', nullable: true })
|
|
117
|
+
], StatusRegistryEntity.prototype, "sealedCommitment", void 0);
|
|
118
|
+
__decorate([
|
|
119
|
+
Column('json', { nullable: true })
|
|
120
|
+
], StatusRegistryEntity.prototype, "metadata", void 0);
|
|
121
|
+
__decorate([
|
|
122
|
+
CreateDateColumn()
|
|
123
|
+
], StatusRegistryEntity.prototype, "createdAt", void 0);
|
|
124
|
+
__decorate([
|
|
125
|
+
UpdateDateColumn()
|
|
126
|
+
], StatusRegistryEntity.prototype, "updatedAt", void 0);
|
|
127
|
+
__decorate([
|
|
128
|
+
Column('boolean', { default: false })
|
|
129
|
+
], StatusRegistryEntity.prototype, "deprecated", void 0);
|
|
130
|
+
__decorate([
|
|
131
|
+
ManyToOne(() => Identifier, (identifier) => identifier.did, { nullable: false, onDelete: 'CASCADE' }),
|
|
132
|
+
JoinColumn({ name: 'issuerId' })
|
|
133
|
+
], StatusRegistryEntity.prototype, "identifier", void 0);
|
|
134
|
+
__decorate([
|
|
135
|
+
ManyToOne(() => CustomerEntity, (customer) => customer.customerId, { nullable: false, onDelete: 'CASCADE' }),
|
|
136
|
+
JoinColumn({ name: 'customerId' })
|
|
137
|
+
], StatusRegistryEntity.prototype, "customer", void 0);
|
|
138
|
+
__decorate([
|
|
139
|
+
BeforeInsert()
|
|
140
|
+
], StatusRegistryEntity.prototype, "addId", null);
|
|
141
|
+
StatusRegistryEntity = __decorate([
|
|
142
|
+
Entity('statusRegistry')
|
|
143
|
+
], StatusRegistryEntity);
|
|
144
|
+
export { StatusRegistryEntity };
|
|
145
|
+
//# sourceMappingURL=status-registry.entity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status-registry.entity.js","sourceRoot":"","sources":["../../../src/database/entities/status-registry.entity.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { MigrationInterface, QueryRunner } from 'typeorm';
|
|
2
|
+
export declare class StudioMigrations1761834657128 implements MigrationInterface {
|
|
3
|
+
name: string;
|
|
4
|
+
up(queryRunner: QueryRunner): Promise<void>;
|
|
5
|
+
down(queryRunner: QueryRunner): Promise<void>;
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=1761834657128-studio-migrations.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"1761834657128-studio-migrations.d.ts","sourceRoot":"","sources":["../../../src/database/migrations/1761834657128-studio-migrations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE1D,qBAAa,6BAA8B,YAAW,kBAAkB;IACvE,IAAI,SAAmC;IAE1B,EAAE,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAY3C,IAAI,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;CAK1D"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export class StudioMigrations1761834657128 {
|
|
2
|
+
name = 'StudioMigrations1761834657128';
|
|
3
|
+
async up(queryRunner) {
|
|
4
|
+
await queryRunner.query(`CREATE TABLE "statusRegistry" ("registryId" character varying NOT NULL, "uri" character varying NOT NULL, "prev_uri" character varying, "next_uri" character varying, "registryType" text NOT NULL, "storageType" text NOT NULL, "registryName" character varying NOT NULL, "encrypted" boolean NOT NULL DEFAULT false, "credentialCategory" character varying NOT NULL, "version" integer NOT NULL DEFAULT '0', "registrySize" integer NOT NULL DEFAULT '131072', "writeCursor" integer NOT NULL DEFAULT '0', "threshold_percentage" integer NOT NULL DEFAULT '80', "state" character varying NOT NULL, "sealedAt" TIMESTAMP WITH TIME ZONE, "sealedCommitment" character varying, "metadata" json, "createdAt" TIMESTAMP NOT NULL DEFAULT now(), "updatedAt" TIMESTAMP NOT NULL DEFAULT now(), "deprecated" boolean NOT NULL DEFAULT false, "issuerId" character varying NOT NULL, "customerId" uuid NOT NULL, CONSTRAINT "PK_a2471963ef3e3203aa53d16e62a" PRIMARY KEY ("registryId"))`);
|
|
5
|
+
await queryRunner.query(`ALTER TABLE "statusRegistry" ADD CONSTRAINT "FK_4805f0100b6a4a8577895e7e4c4" FOREIGN KEY ("issuerId") REFERENCES "identifier"("did") ON DELETE CASCADE ON UPDATE NO ACTION`);
|
|
6
|
+
await queryRunner.query(`ALTER TABLE "statusRegistry" ADD CONSTRAINT "FK_c35b641a0cb9520ace29d6fe634" FOREIGN KEY ("customerId") REFERENCES "customer"("customerId") ON DELETE CASCADE ON UPDATE NO ACTION`);
|
|
7
|
+
}
|
|
8
|
+
async down(queryRunner) {
|
|
9
|
+
await queryRunner.query(`ALTER TABLE "statusRegistry" DROP CONSTRAINT "FK_c35b641a0cb9520ace29d6fe634"`);
|
|
10
|
+
await queryRunner.query(`ALTER TABLE "statusRegistry" DROP CONSTRAINT "FK_4805f0100b6a4a8577895e7e4c4"`);
|
|
11
|
+
await queryRunner.query(`DROP TABLE "statusRegistry"`);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=1761834657128-studio-migrations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"1761834657128-studio-migrations.js","sourceRoot":"","sources":["../../../src/database/migrations/1761834657128-studio-migrations.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,6BAA6B;IACzC,IAAI,GAAG,+BAA+B,CAAC;IAEhC,KAAK,CAAC,EAAE,CAAC,WAAwB;QACvC,MAAM,WAAW,CAAC,KAAK,CACtB,07BAA07B,CAC17B,CAAC;QACF,MAAM,WAAW,CAAC,KAAK,CACtB,4KAA4K,CAC5K,CAAC;QACF,MAAM,WAAW,CAAC,KAAK,CACtB,mLAAmL,CACnL,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,IAAI,CAAC,WAAwB;QACzC,MAAM,WAAW,CAAC,KAAK,CAAC,+EAA+E,CAAC,CAAC;QACzG,MAAM,WAAW,CAAC,KAAK,CAAC,+EAA+E,CAAC,CAAC;QACzG,MAAM,WAAW,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;IACxD,CAAC;CACD"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { MigrationInterface, QueryRunner } from 'typeorm';
|
|
2
|
+
/**
|
|
3
|
+
* Migrates existing Status List resources from ResourceEntity to StatusRegistryEntity
|
|
4
|
+
* This migration:
|
|
5
|
+
* 1. Finds all ResourceEntity records with resourceType='BitstringStatusListCredential' | 'StatusList2021Revocation' | 'StatusList2021Suspension' | 'StatusList2021'
|
|
6
|
+
* 2. Resolves status list data from DID URLs via resolver
|
|
7
|
+
* 3. Creates corresponding StatusRegistryEntity records'
|
|
8
|
+
*/
|
|
9
|
+
export declare class MigrationsStatusLists1762775396083 implements MigrationInterface {
|
|
10
|
+
private readonly RESOLVER_URL;
|
|
11
|
+
private readonly BATCH_SIZE;
|
|
12
|
+
up(queryRunner: QueryRunner): Promise<void>;
|
|
13
|
+
down(queryRunner: QueryRunner): Promise<void>;
|
|
14
|
+
/**
|
|
15
|
+
* Calculate registry size from the statuslist resource
|
|
16
|
+
* For BitstringStatusList: get from metadata.length
|
|
17
|
+
* For StatusList2021: calculate from encodedList based on encoding (base64url or hex)
|
|
18
|
+
*/
|
|
19
|
+
private calculateRegistrySize;
|
|
20
|
+
/**
|
|
21
|
+
* Resolve statuslist from DID URL using the resolver
|
|
22
|
+
*/
|
|
23
|
+
private resolveStatusListResource;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=1762775396083-MigrateStatusLists.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"1762775396083-MigrateStatusLists.d.ts","sourceRoot":"","sources":["../../../src/database/migrations/1762775396083-MigrateStatusLists.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAa1D;;;;;;GAMG;AACH,qBAAa,kCAAmC,YAAW,kBAAkB;IAC5E,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAgD;IAC7E,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAM;IAEpB,EAAE,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IA4I3C,IAAI,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAc1D;;;;OAIG;IACH,OAAO,CAAC,qBAAqB;IAiD7B;;OAEG;YACW,yBAAyB;CAgDvC"}
|
|
@@ -0,0 +1,243 @@
|
|
|
1
|
+
import { ResourceEntity } from '../entities/resource.entity.js';
|
|
2
|
+
import { StatusRegistryEntity } from '../entities/status-registry.entity.js';
|
|
3
|
+
import { StatusRegistryState } from '../../types/credential-status.js';
|
|
4
|
+
import { CredentialCategory } from '../../types/credential.js';
|
|
5
|
+
import { gunzipSync } from 'zlib';
|
|
6
|
+
/**
|
|
7
|
+
* Migrates existing Status List resources from ResourceEntity to StatusRegistryEntity
|
|
8
|
+
* This migration:
|
|
9
|
+
* 1. Finds all ResourceEntity records with resourceType='BitstringStatusListCredential' | 'StatusList2021Revocation' | 'StatusList2021Suspension' | 'StatusList2021'
|
|
10
|
+
* 2. Resolves status list data from DID URLs via resolver
|
|
11
|
+
* 3. Creates corresponding StatusRegistryEntity records'
|
|
12
|
+
*/
|
|
13
|
+
export class MigrationsStatusLists1762775396083 {
|
|
14
|
+
RESOLVER_URL = 'https://resolver.cheqd.net/1.0/identifiers';
|
|
15
|
+
BATCH_SIZE = 50; // Process statuslists in batches to avoid memory issues
|
|
16
|
+
async up(queryRunner) {
|
|
17
|
+
console.log('Starting Studio status list migration...');
|
|
18
|
+
// Find all status list resources
|
|
19
|
+
const statusListResources = await queryRunner.manager.find(ResourceEntity, {
|
|
20
|
+
where: [
|
|
21
|
+
{ resourceType: 'BitstringStatusListCredential' },
|
|
22
|
+
{ resourceType: 'StatusList2021Revocation' },
|
|
23
|
+
{ resourceType: 'StatusList2021Suspension' },
|
|
24
|
+
{ resourceType: 'StatusList2021' },
|
|
25
|
+
],
|
|
26
|
+
relations: ['identifier', 'customer'],
|
|
27
|
+
});
|
|
28
|
+
console.log(`Found ${statusListResources.length} statuslist resources`);
|
|
29
|
+
if (statusListResources.length === 0) {
|
|
30
|
+
console.log('No statuslist to migrate');
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
let successCount = 0;
|
|
34
|
+
let skippedCount = 0;
|
|
35
|
+
let errorCount = 0;
|
|
36
|
+
const errors = [];
|
|
37
|
+
// Remove duplicates by DID URL (constructed per resource) using a Set to keep first occurrence
|
|
38
|
+
const seen = new Set();
|
|
39
|
+
const uniqueStatusLists = statusListResources.filter((res) => {
|
|
40
|
+
const did = res?.identifier?.did ?? '';
|
|
41
|
+
const didUrl = `${did}?resourceName=${res.resourceName}&resourceType=${res.resourceType}`;
|
|
42
|
+
if (seen.has(didUrl))
|
|
43
|
+
return false;
|
|
44
|
+
seen.add(didUrl);
|
|
45
|
+
return true;
|
|
46
|
+
});
|
|
47
|
+
console.log(`${uniqueStatusLists.length} statuslist resources are unique and ready to migrate`);
|
|
48
|
+
// Process statuslist in batches
|
|
49
|
+
for (let i = 0; i < uniqueStatusLists.length; i += this.BATCH_SIZE) {
|
|
50
|
+
const batch = uniqueStatusLists.slice(i, i + this.BATCH_SIZE);
|
|
51
|
+
for (const resource of batch) {
|
|
52
|
+
try {
|
|
53
|
+
const didUrl = `${resource.identifier.did}?resourceName=${resource.resourceName}&resourceType=${resource.resourceType}`;
|
|
54
|
+
// Check if already migrated
|
|
55
|
+
const existing = await queryRunner.manager.findOne(StatusRegistryEntity, {
|
|
56
|
+
where: {
|
|
57
|
+
uri: didUrl,
|
|
58
|
+
},
|
|
59
|
+
});
|
|
60
|
+
if (existing) {
|
|
61
|
+
skippedCount++;
|
|
62
|
+
continue;
|
|
63
|
+
}
|
|
64
|
+
// Resolve statuslist from DID URL
|
|
65
|
+
const statuslist = await this.resolveStatusListResource(didUrl);
|
|
66
|
+
if (!statuslist || !statuslist.resource) {
|
|
67
|
+
throw new Error(`Failed to resolve statuslist from ${didUrl}`);
|
|
68
|
+
}
|
|
69
|
+
// Calculate registry size from the encoded list
|
|
70
|
+
const registrySize = this.calculateRegistrySize(statuslist.resource);
|
|
71
|
+
// Determine issuance/created date depending on the resolved resource shape
|
|
72
|
+
let createdDate;
|
|
73
|
+
const resAny = statuslist.resource;
|
|
74
|
+
if (resAny?.bitstringStatusListCredential) {
|
|
75
|
+
createdDate = resAny.bitstringStatusListCredential?.issuanceDate;
|
|
76
|
+
}
|
|
77
|
+
else if (resAny?.StatusList2021?.validFrom) {
|
|
78
|
+
createdDate = resAny.StatusList2021.validFrom;
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
createdDate = new Date().toISOString();
|
|
82
|
+
}
|
|
83
|
+
// Create StatusRegistryEntity
|
|
84
|
+
const statusRegistryEntity = new StatusRegistryEntity({
|
|
85
|
+
uri: `${resource.identifier.did}?resourceName=${resource.resourceName}&resourceType=${resource.resourceType}`,
|
|
86
|
+
registryType: resource.resourceType,
|
|
87
|
+
registryName: resource.resourceName,
|
|
88
|
+
credentialCategory: CredentialCategory.CREDENTIAL,
|
|
89
|
+
version: 0, // default version to 0 for migrated lists
|
|
90
|
+
registrySize: registrySize,
|
|
91
|
+
writeCursor: 0, // default writeCursor to 0 for migrated lists
|
|
92
|
+
state: StatusRegistryState.Active,
|
|
93
|
+
storageType: 'cheqd',
|
|
94
|
+
metadata: {
|
|
95
|
+
migratedFrom: 'ResourceEntity',
|
|
96
|
+
originalResourceId: resource.resourceId,
|
|
97
|
+
encoding: statuslist.resource.metadata.encoding,
|
|
98
|
+
},
|
|
99
|
+
identifier: resource.identifier,
|
|
100
|
+
customer: resource.customer,
|
|
101
|
+
deprecated: false,
|
|
102
|
+
encrypted: resource.encrypted || false,
|
|
103
|
+
threshold_percentage: 80,
|
|
104
|
+
createdAt: new Date(createdDate),
|
|
105
|
+
});
|
|
106
|
+
await queryRunner.manager.save(StatusRegistryEntity, statusRegistryEntity);
|
|
107
|
+
successCount++;
|
|
108
|
+
if (successCount % 10 === 0) {
|
|
109
|
+
console.log(` Migrated ${successCount} statuslist so far...`);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
catch (error) {
|
|
113
|
+
errorCount++;
|
|
114
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
115
|
+
errors.push({
|
|
116
|
+
resourceId: resource.resourceId,
|
|
117
|
+
error: errorMessage,
|
|
118
|
+
});
|
|
119
|
+
console.error(` Error migrating statuslist ${resource.resourceId}:`, errorMessage);
|
|
120
|
+
// Continue with next statuslist
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
// Small delay between batches
|
|
124
|
+
if (i + this.BATCH_SIZE < statusListResources.length) {
|
|
125
|
+
await new Promise((resolve) => setTimeout(resolve, 500));
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
console.log(`\nMigration completed:`);
|
|
129
|
+
console.log(` Successfully migrated: ${successCount}`);
|
|
130
|
+
console.log(` Skipped (already migrated): ${skippedCount}`);
|
|
131
|
+
console.log(` Errors: ${errorCount}\n`);
|
|
132
|
+
console.log(` Total processed: ${successCount + skippedCount + errorCount}/${statusListResources.length}`);
|
|
133
|
+
if (errors.length > 0) {
|
|
134
|
+
console.log(`\nErrors encountered (first 10):`);
|
|
135
|
+
errors.slice(0, 10).forEach(({ resourceId, error }) => {
|
|
136
|
+
console.log(` - ${resourceId}: ${error}`);
|
|
137
|
+
});
|
|
138
|
+
if (errors.length > 10) {
|
|
139
|
+
console.log(` ... and ${errors.length - 10} more errors`);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
async down(queryRunner) {
|
|
144
|
+
console.log('Rolling back Studio statuslist migration...');
|
|
145
|
+
// Delete all StatusRegistryEntity records that were migrated from ResourceEntity
|
|
146
|
+
const result = await queryRunner.manager
|
|
147
|
+
.createQueryBuilder()
|
|
148
|
+
.delete()
|
|
149
|
+
.from(StatusRegistryEntity)
|
|
150
|
+
.andWhere("metadata->>'migratedFrom' = :migratedFrom", { migratedFrom: 'ResourceEntity' })
|
|
151
|
+
.execute();
|
|
152
|
+
console.log(`Rolled back ${result.affected} migrated statuslists`);
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Calculate registry size from the statuslist resource
|
|
156
|
+
* For BitstringStatusList: get from metadata.length
|
|
157
|
+
* For StatusList2021: calculate from encodedList based on encoding (base64url or hex)
|
|
158
|
+
*/
|
|
159
|
+
calculateRegistrySize(resource) {
|
|
160
|
+
try {
|
|
161
|
+
// Default size if we can't determine
|
|
162
|
+
const DEFAULT_SIZE = 131072; // 128KB * 8 bits = 131,072 bits (default from design)
|
|
163
|
+
// Check if BitstringStatusList - has metadata.length property
|
|
164
|
+
const metadata = resource?.metadata;
|
|
165
|
+
if (metadata && metadata.length) {
|
|
166
|
+
console.log(` BitstringStatusList size from metadata: ${metadata.length}`);
|
|
167
|
+
return metadata.length;
|
|
168
|
+
}
|
|
169
|
+
// For StatusList2021, extract encodedList and calculate size based on encoding
|
|
170
|
+
// The structure is: { StatusList2021: { encodedList: "..." }, metadata: { encoding: "..." } }
|
|
171
|
+
const encodedList = resource?.StatusList2021?.encodedList;
|
|
172
|
+
const encoding = metadata?.encoding || 'base64url'; // Default to base64url
|
|
173
|
+
if (!encodedList || typeof encodedList !== 'string') {
|
|
174
|
+
console.warn(' No encodedList found, using default size');
|
|
175
|
+
return DEFAULT_SIZE;
|
|
176
|
+
}
|
|
177
|
+
let byteLength;
|
|
178
|
+
let compressed;
|
|
179
|
+
if (encoding === 'hex') {
|
|
180
|
+
compressed = Buffer.from(encodedList, 'hex');
|
|
181
|
+
}
|
|
182
|
+
else {
|
|
183
|
+
const cleaned = encodedList.replace(/-/g, '+').replace(/_/g, '/').replace(/=/g, '');
|
|
184
|
+
compressed = Buffer.from(cleaned, 'base64');
|
|
185
|
+
}
|
|
186
|
+
// gunzipSync expects a Uint8Array/DataView in some typings; convert Buffer to Uint8Array to satisfy TS type
|
|
187
|
+
const decompressed = gunzipSync(Uint8Array.from(compressed));
|
|
188
|
+
// Determine byte length from decompressed data
|
|
189
|
+
byteLength = decompressed.length ?? decompressed.length;
|
|
190
|
+
const bitLength = byteLength * 8;
|
|
191
|
+
console.log(` StatusList2021 calculated size (encoding: ${encoding}): ${bitLength}`);
|
|
192
|
+
return bitLength > 0 ? bitLength : DEFAULT_SIZE;
|
|
193
|
+
}
|
|
194
|
+
catch (error) {
|
|
195
|
+
console.warn(' Error calculating registry size:', error);
|
|
196
|
+
return 131072; // Default fallback
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* Resolve statuslist from DID URL using the resolver
|
|
201
|
+
*/
|
|
202
|
+
async resolveStatusListResource(didUrl) {
|
|
203
|
+
try {
|
|
204
|
+
// Build resolver URL for metadata first
|
|
205
|
+
const url = new URL(`${this.RESOLVER_URL}/${didUrl}`);
|
|
206
|
+
console.log(` Resolving statuslist resource from ${url.toString()}`);
|
|
207
|
+
// Fetch resource metadata (did-url-dereferencing profile)
|
|
208
|
+
const metaResp = await fetch(`${this.RESOLVER_URL}/${didUrl}`, {
|
|
209
|
+
headers: {
|
|
210
|
+
Accept: 'application/ld+json;profile=https://w3id.org/did-url-dereferencing',
|
|
211
|
+
},
|
|
212
|
+
});
|
|
213
|
+
if (!metaResp.ok) {
|
|
214
|
+
throw new Error(`HTTP ${metaResp.status}: ${metaResp.statusText}`);
|
|
215
|
+
}
|
|
216
|
+
const resourceMetadataVersioned = (await metaResp.json());
|
|
217
|
+
// Handle resolver-level errors
|
|
218
|
+
const arbitraryError = resourceMetadataVersioned?.dereferencingMetadata?.error;
|
|
219
|
+
if (arbitraryError) {
|
|
220
|
+
console.error(` Resolver error for ${didUrl}: ${String(arbitraryError)}`);
|
|
221
|
+
return null;
|
|
222
|
+
}
|
|
223
|
+
// If no linked resource metadata, nothing to fetch
|
|
224
|
+
if (!resourceMetadataVersioned?.contentMetadata) {
|
|
225
|
+
console.error(` Unable to determine resource metadata for ${didUrl}`);
|
|
226
|
+
return null;
|
|
227
|
+
}
|
|
228
|
+
// Choose latest resource metadata: prefer entry without nextVersionId, else most recently created
|
|
229
|
+
const resourceMetadata = resourceMetadataVersioned.contentMetadata;
|
|
230
|
+
const resource = resourceMetadataVersioned.contentStream;
|
|
231
|
+
return {
|
|
232
|
+
resource,
|
|
233
|
+
resourceMetadata,
|
|
234
|
+
};
|
|
235
|
+
}
|
|
236
|
+
catch (error) {
|
|
237
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
238
|
+
console.error(` Failed to resolve ${didUrl}: ${errorMessage}`);
|
|
239
|
+
return null;
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
//# sourceMappingURL=1762775396083-MigrateStatusLists.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"1762775396083-MigrateStatusLists.js","sourceRoot":"","sources":["../../../src/database/migrations/1762775396083-MigrateStatusLists.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { MigrationInterface, QueryRunner } from 'typeorm';
|
|
2
|
+
/**
|
|
3
|
+
* Updates writeCursor and additionalUsedIndexes for StatusRegistryEntity based on actual credential issuance
|
|
4
|
+
* This migration:
|
|
5
|
+
* 1. Queries IssuedCredential table for all credentials with credentialStatus
|
|
6
|
+
* 2. Groups credentials by their status list URI
|
|
7
|
+
* 3. For each status registry:
|
|
8
|
+
* - Finds all used indexes
|
|
9
|
+
* - Determines the sequential run from the beginning
|
|
10
|
+
* - Sets writeCursor to the last sequential index
|
|
11
|
+
* - Stores non-sequential indexes in metadata.additionalUsedIndexes
|
|
12
|
+
*/
|
|
13
|
+
export declare class UpdateWriteCursors1762775500000 implements MigrationInterface {
|
|
14
|
+
up(queryRunner: QueryRunner): Promise<void>;
|
|
15
|
+
down(queryRunner: QueryRunner): Promise<void>;
|
|
16
|
+
/**
|
|
17
|
+
* Analyze indexes to find sequential run and non-sequential indexes
|
|
18
|
+
* @param sortedIndexes - Array of unique indexes sorted in ascending order
|
|
19
|
+
* @returns Object with writeCursor and additionalUsedIndexes
|
|
20
|
+
*/
|
|
21
|
+
private analyzeIndexes;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=1762775500000-UpdateWriteCursors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"1762775500000-UpdateWriteCursors.d.ts","sourceRoot":"","sources":["../../../src/database/migrations/1762775500000-UpdateWriteCursors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAI1D;;;;;;;;;;GAUG;AACH,qBAAa,+BAAgC,YAAW,kBAAkB;IAC5D,EAAE,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IA0I3C,IAAI,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAmD1D;;;;OAIG;IACH,OAAO,CAAC,cAAc;CA6BtB"}
|