@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.
Files changed (138) hide show
  1. package/dist/app.d.ts.map +1 -1
  2. package/dist/app.js +4 -0
  3. package/dist/app.js.map +1 -1
  4. package/dist/controllers/api/accreditation.d.ts.map +1 -1
  5. package/dist/controllers/api/accreditation.js +36 -9
  6. package/dist/controllers/api/accreditation.js.map +1 -1
  7. package/dist/controllers/api/credential-status.d.ts +94 -0
  8. package/dist/controllers/api/credential-status.d.ts.map +1 -1
  9. package/dist/controllers/api/credential-status.js +220 -506
  10. package/dist/controllers/api/credential-status.js.map +1 -1
  11. package/dist/controllers/api/credential.d.ts +66 -0
  12. package/dist/controllers/api/credential.d.ts.map +1 -1
  13. package/dist/controllers/api/credential.js +117 -1
  14. package/dist/controllers/api/credential.js.map +1 -1
  15. package/dist/controllers/api/did.js.map +1 -1
  16. package/dist/controllers/api/key.d.ts +71 -1
  17. package/dist/controllers/api/key.d.ts.map +1 -1
  18. package/dist/controllers/api/key.js +113 -2
  19. package/dist/controllers/api/key.js.map +1 -1
  20. package/dist/controllers/api/presentation.js +22 -21
  21. package/dist/controllers/api/presentation.js.map +1 -1
  22. package/dist/controllers/api/providers.controller.js.map +1 -1
  23. package/dist/controllers/api/resource.js.map +1 -1
  24. package/dist/controllers/validator/did.js +1 -1
  25. package/dist/controllers/validator/did.js.map +1 -1
  26. package/dist/database/entities/issued-credential.entity.d.ts +10 -1
  27. package/dist/database/entities/issued-credential.entity.d.ts.map +1 -1
  28. package/dist/database/entities/issued-credential.entity.js +22 -0
  29. package/dist/database/entities/issued-credential.entity.js.map +1 -1
  30. package/dist/database/entities/status-registry.entity.d.ts +60 -0
  31. package/dist/database/entities/status-registry.entity.d.ts.map +1 -0
  32. package/dist/database/entities/status-registry.entity.js +145 -0
  33. package/dist/database/entities/status-registry.entity.js.map +1 -0
  34. package/dist/database/migrations/1761834657128-studio-migrations.d.ts +7 -0
  35. package/dist/database/migrations/1761834657128-studio-migrations.d.ts.map +1 -0
  36. package/dist/database/migrations/1761834657128-studio-migrations.js +14 -0
  37. package/dist/database/migrations/1761834657128-studio-migrations.js.map +1 -0
  38. package/dist/database/migrations/1762775396083-MigrateStatusLists.d.ts +25 -0
  39. package/dist/database/migrations/1762775396083-MigrateStatusLists.d.ts.map +1 -0
  40. package/dist/database/migrations/1762775396083-MigrateStatusLists.js +243 -0
  41. package/dist/database/migrations/1762775396083-MigrateStatusLists.js.map +1 -0
  42. package/dist/database/migrations/1762775500000-UpdateWriteCursors.d.ts +23 -0
  43. package/dist/database/migrations/1762775500000-UpdateWriteCursors.d.ts.map +1 -0
  44. package/dist/database/migrations/1762775500000-UpdateWriteCursors.js +181 -0
  45. package/dist/database/migrations/1762775500000-UpdateWriteCursors.js.map +1 -0
  46. package/dist/database/types/types.d.ts.map +1 -1
  47. package/dist/database/types/types.js +10 -0
  48. package/dist/database/types/types.js.map +1 -1
  49. package/dist/helpers/mailchimp.d.ts.map +1 -1
  50. package/dist/helpers/mailchimp.js +1 -3
  51. package/dist/helpers/mailchimp.js.map +1 -1
  52. package/dist/middleware/auth/routes/api/credential-status-auth.d.ts.map +1 -1
  53. package/dist/middleware/auth/routes/api/credential-status-auth.js +2 -0
  54. package/dist/middleware/auth/routes/api/credential-status-auth.js.map +1 -1
  55. package/dist/middleware/auth/routes/api/key-auth.d.ts.map +1 -1
  56. package/dist/middleware/auth/routes/api/key-auth.js +1 -0
  57. package/dist/middleware/auth/routes/api/key-auth.js.map +1 -1
  58. package/dist/services/api/credential-status.d.ts +107 -0
  59. package/dist/services/api/credential-status.d.ts.map +1 -0
  60. package/dist/services/api/credential-status.js +923 -0
  61. package/dist/services/api/credential-status.js.map +1 -0
  62. package/dist/services/api/credentials.d.ts +12 -0
  63. package/dist/services/api/credentials.d.ts.map +1 -1
  64. package/dist/services/api/credentials.js +330 -117
  65. package/dist/services/api/credentials.js.map +1 -1
  66. package/dist/services/connectors/resource.js.map +1 -1
  67. package/dist/services/identity/abstract.d.ts +1 -1
  68. package/dist/services/identity/abstract.d.ts.map +1 -1
  69. package/dist/services/identity/abstract.js +1 -1
  70. package/dist/services/identity/abstract.js.map +1 -1
  71. package/dist/services/identity/default.d.ts +1 -1
  72. package/dist/services/identity/default.d.ts.map +1 -1
  73. package/dist/services/identity/default.js +2 -2
  74. package/dist/services/identity/default.js.map +1 -1
  75. package/dist/services/identity/index.d.ts +1 -1
  76. package/dist/services/identity/index.d.ts.map +1 -1
  77. package/dist/services/identity/providers/studio/agent.d.ts +6 -6
  78. package/dist/services/identity/providers/studio/agent.d.ts.map +1 -1
  79. package/dist/services/identity/providers/studio/agent.js +11 -2
  80. package/dist/services/identity/providers/studio/agent.js.map +1 -1
  81. package/dist/services/identity/providers/studio/local.d.ts +3 -3
  82. package/dist/services/identity/providers/studio/postgres.d.ts +3 -3
  83. package/dist/services/identity/providers/studio/postgres.d.ts.map +1 -1
  84. package/dist/services/identity/providers/studio/postgres.js +0 -12
  85. package/dist/services/identity/providers/studio/postgres.js.map +1 -1
  86. package/dist/services/track/api/credential-status-subscriber.d.ts +4 -4
  87. package/dist/services/track/api/credential-status-subscriber.d.ts.map +1 -1
  88. package/dist/services/track/api/credential-status-subscriber.js +18 -1
  89. package/dist/services/track/api/credential-status-subscriber.js.map +1 -1
  90. package/dist/services/track/api/credential-subscriber.d.ts +4 -4
  91. package/dist/services/track/api/credential-subscriber.d.ts.map +1 -1
  92. package/dist/services/track/api/credential-subscriber.js.map +1 -1
  93. package/dist/services/track/api/did-subscriber.d.ts +4 -4
  94. package/dist/services/track/api/did-subscriber.d.ts.map +1 -1
  95. package/dist/services/track/api/did-subscriber.js.map +1 -1
  96. package/dist/services/track/api/key-subscriber.d.ts +4 -4
  97. package/dist/services/track/api/key-subscriber.d.ts.map +1 -1
  98. package/dist/services/track/api/key-subscriber.js.map +1 -1
  99. package/dist/services/track/api/presentation-subscriber.d.ts +4 -4
  100. package/dist/services/track/api/presentation-subscriber.d.ts.map +1 -1
  101. package/dist/services/track/api/presentation-subscriber.js.map +1 -1
  102. package/dist/services/track/api/resource-subscriber.d.ts +4 -4
  103. package/dist/services/track/api/resource-subscriber.d.ts.map +1 -1
  104. package/dist/services/track/api/resource-subscriber.js.map +1 -1
  105. package/dist/services/track/base.d.ts +2 -2
  106. package/dist/services/track/base.d.ts.map +1 -1
  107. package/dist/services/track/base.js.map +1 -1
  108. package/dist/services/track/operation-subscriber.d.ts +4 -4
  109. package/dist/services/track/operation-subscriber.d.ts.map +1 -1
  110. package/dist/services/track/operation-subscriber.js.map +1 -1
  111. package/dist/services/track/tracker.d.ts +2 -2
  112. package/dist/services/track/tracker.d.ts.map +1 -1
  113. package/dist/services/track/tracker.js.map +1 -1
  114. package/dist/services/track/types.d.ts +2 -2
  115. package/dist/services/track/types.d.ts.map +1 -1
  116. package/dist/static/swagger-api.json +684 -67
  117. package/dist/types/accreditation.d.ts +3 -0
  118. package/dist/types/accreditation.d.ts.map +1 -1
  119. package/dist/types/constants.d.ts +2 -0
  120. package/dist/types/constants.d.ts.map +1 -1
  121. package/dist/types/constants.js +2 -0
  122. package/dist/types/constants.js.map +1 -1
  123. package/dist/types/credential-status.d.ts +39 -1
  124. package/dist/types/credential-status.d.ts.map +1 -1
  125. package/dist/types/credential-status.js +7 -0
  126. package/dist/types/credential-status.js.map +1 -1
  127. package/dist/types/credential.d.ts +21 -3
  128. package/dist/types/credential.d.ts.map +1 -1
  129. package/dist/types/credential.js +5 -0
  130. package/dist/types/credential.js.map +1 -1
  131. package/dist/types/swagger-api-types.d.ts +242 -39
  132. package/dist/types/swagger-api-types.d.ts.map +1 -1
  133. package/dist/types/swagger-api-types.js +242 -39
  134. package/dist/types/swagger-api-types.js.map +1 -1
  135. package/dist/types/track.d.ts +8 -6
  136. package/dist/types/track.d.ts.map +1 -1
  137. package/dist/types/track.js.map +1 -1
  138. 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"}