@naylence/runtime 0.3.5-test.920 → 0.3.5-test.922

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.
@@ -487,15 +487,22 @@ function getInitialLogLevel() {
487
487
  return exports.LogLevel.OFF;
488
488
  }
489
489
  // Check FAME_LOG_LEVEL environment variable
490
- if (isNode && typeof process !== 'undefined' && process.env.FAME_LOG_LEVEL) {
490
+ let envLevel;
491
+ if (isNode && typeof process !== 'undefined') {
492
+ envLevel = process.env.FAME_LOG_LEVEL;
493
+ }
494
+ else if (typeof window !== 'undefined' && window.__ENV__) {
495
+ envLevel = window.__ENV__.FAME_LOG_LEVEL;
496
+ }
497
+ if (envLevel) {
491
498
  try {
492
- const envLevel = process.env.FAME_LOG_LEVEL.trim().toUpperCase();
499
+ const normalized = envLevel.trim().toUpperCase();
493
500
  // Direct enum name match (e.g., "DEBUG", "INFO")
494
- if (envLevel in exports.LogLevel) {
495
- return exports.LogLevel[envLevel];
501
+ if (normalized in exports.LogLevel) {
502
+ return exports.LogLevel[normalized];
496
503
  }
497
504
  // Try alternative mappings
498
- if (envLevel === 'WARN')
505
+ if (normalized === 'WARN')
499
506
  return exports.LogLevel.WARNING;
500
507
  }
501
508
  catch {
@@ -5365,12 +5372,12 @@ for (const [name, config] of Object.entries(SQLITE_PROFILES)) {
5365
5372
  }
5366
5373
 
5367
5374
  // This file is auto-generated during build - do not edit manually
5368
- // Generated from package.json version: 0.3.5-test.920
5375
+ // Generated from package.json version: 0.3.5-test.922
5369
5376
  /**
5370
5377
  * The package version, injected at build time.
5371
5378
  * @internal
5372
5379
  */
5373
- const VERSION = '0.3.5-test.920';
5380
+ const VERSION = '0.3.5-test.922';
5374
5381
 
5375
5382
  /**
5376
5383
  * Fame errors module - Fame protocol specific error classes
@@ -26315,6 +26322,111 @@ class SigningConfig {
26315
26322
  }
26316
26323
  }
26317
26324
 
26325
+ function hasBuffer() {
26326
+ return typeof Buffer !== 'undefined';
26327
+ }
26328
+ function readStringProperty(source, ...names) {
26329
+ if (!source || typeof source !== 'object') {
26330
+ return undefined;
26331
+ }
26332
+ for (const name of names) {
26333
+ const value = source[name];
26334
+ if (typeof value === 'string' && value.length > 0) {
26335
+ return value;
26336
+ }
26337
+ }
26338
+ return undefined;
26339
+ }
26340
+ function decodePem(pem) {
26341
+ const base64 = pem
26342
+ .replace(/-----BEGIN[^-]+-----/g, '')
26343
+ .replace(/-----END[^-]+-----/g, '')
26344
+ .replace(/\s+/g, '');
26345
+ if (typeof atob === 'function') {
26346
+ const binary = atob(base64);
26347
+ const bytes = new Uint8Array(binary.length);
26348
+ for (let i = 0; i < binary.length; i += 1) {
26349
+ bytes[i] = binary.charCodeAt(i);
26350
+ }
26351
+ return bytes;
26352
+ }
26353
+ if (hasBuffer()) {
26354
+ return Uint8Array.from(Buffer.from(base64, 'base64'));
26355
+ }
26356
+ throw new Error('Base64 decoding is not available in this environment');
26357
+ }
26358
+ function readLength(data, offset) {
26359
+ const initial = data[offset];
26360
+ if (initial === undefined) {
26361
+ throw new Error('Unexpected end of ASN.1 data');
26362
+ }
26363
+ if ((initial & 0x80) === 0) {
26364
+ return { length: initial, nextOffset: offset + 1 };
26365
+ }
26366
+ const lengthOfLength = initial & 0x7f;
26367
+ if (lengthOfLength === 0 || lengthOfLength > 4) {
26368
+ throw new Error('Unsupported ASN.1 length encoding');
26369
+ }
26370
+ let length = 0;
26371
+ let position = offset + 1;
26372
+ for (let i = 0; i < lengthOfLength; i += 1) {
26373
+ const byte = data[position];
26374
+ if (byte === undefined) {
26375
+ throw new Error('Unexpected end of ASN.1 data');
26376
+ }
26377
+ length = (length << 8) | byte;
26378
+ position += 1;
26379
+ }
26380
+ return { length, nextOffset: position };
26381
+ }
26382
+ function readElement(data, offset, tag) {
26383
+ if (data[offset] !== tag) {
26384
+ throw new Error(`Unexpected ASN.1 tag: expected 0x${tag.toString(16)}, got 0x${(data[offset] ?? 0).toString(16)}`);
26385
+ }
26386
+ const { length, nextOffset } = readLength(data, offset + 1);
26387
+ const contentOffset = nextOffset;
26388
+ return {
26389
+ length,
26390
+ contentOffset,
26391
+ nextOffset: contentOffset + length,
26392
+ };
26393
+ }
26394
+ function parseEd25519PrivateKey(pem) {
26395
+ const raw = decodePem(pem);
26396
+ if (raw.length === 32) {
26397
+ return raw.slice();
26398
+ }
26399
+ // Handle PKCS#8 structure defined in RFC 8410
26400
+ const sequence = readElement(raw, 0, 0x30);
26401
+ const version = readElement(raw, sequence.contentOffset, 0x02);
26402
+ let offset = version.nextOffset;
26403
+ const algorithm = readElement(raw, offset, 0x30);
26404
+ offset = algorithm.nextOffset;
26405
+ const privateKey = readElement(raw, offset, 0x04);
26406
+ const privateContent = raw.subarray(privateKey.contentOffset, privateKey.contentOffset + privateKey.length);
26407
+ if (privateContent.length === 32) {
26408
+ return privateContent.slice();
26409
+ }
26410
+ if (privateContent.length >= 34 && privateContent[0] === 0x04) {
26411
+ const innerLength = privateContent[1];
26412
+ if (innerLength !== 32 || privateContent.length < innerLength + 2) {
26413
+ throw new Error('Unexpected Ed25519 private key length');
26414
+ }
26415
+ return privateContent.subarray(2, 34);
26416
+ }
26417
+ throw new Error('Unsupported Ed25519 private key structure');
26418
+ }
26419
+ const textEncoder = typeof TextEncoder !== 'undefined' ? new TextEncoder() : undefined;
26420
+ function encodeUtf8(value) {
26421
+ if (textEncoder) {
26422
+ return textEncoder.encode(value);
26423
+ }
26424
+ if (hasBuffer()) {
26425
+ return Uint8Array.from(Buffer.from(value, 'utf8'));
26426
+ }
26427
+ throw new Error('No UTF-8 encoder available in this environment');
26428
+ }
26429
+
26318
26430
  // Legacy global crypto provider accessors are intentionally disabled to force
26319
26431
  // explicit dependency wiring. If a component still needs a global provider,
26320
26432
  // refactor it to accept one via configuration instead of re-enabling this code.
@@ -41477,111 +41589,6 @@ var sharedSecretTokenVerifier = /*#__PURE__*/Object.freeze({
41477
41589
  SharedSecretTokenVerifier: SharedSecretTokenVerifier
41478
41590
  });
41479
41591
 
41480
- function hasBuffer() {
41481
- return typeof Buffer !== 'undefined';
41482
- }
41483
- function readStringProperty(source, ...names) {
41484
- if (!source || typeof source !== 'object') {
41485
- return undefined;
41486
- }
41487
- for (const name of names) {
41488
- const value = source[name];
41489
- if (typeof value === 'string' && value.length > 0) {
41490
- return value;
41491
- }
41492
- }
41493
- return undefined;
41494
- }
41495
- function decodePem(pem) {
41496
- const base64 = pem
41497
- .replace(/-----BEGIN[^-]+-----/g, '')
41498
- .replace(/-----END[^-]+-----/g, '')
41499
- .replace(/\s+/g, '');
41500
- if (typeof atob === 'function') {
41501
- const binary = atob(base64);
41502
- const bytes = new Uint8Array(binary.length);
41503
- for (let i = 0; i < binary.length; i += 1) {
41504
- bytes[i] = binary.charCodeAt(i);
41505
- }
41506
- return bytes;
41507
- }
41508
- if (hasBuffer()) {
41509
- return Uint8Array.from(Buffer.from(base64, 'base64'));
41510
- }
41511
- throw new Error('Base64 decoding is not available in this environment');
41512
- }
41513
- function readLength(data, offset) {
41514
- const initial = data[offset];
41515
- if (initial === undefined) {
41516
- throw new Error('Unexpected end of ASN.1 data');
41517
- }
41518
- if ((initial & 0x80) === 0) {
41519
- return { length: initial, nextOffset: offset + 1 };
41520
- }
41521
- const lengthOfLength = initial & 0x7f;
41522
- if (lengthOfLength === 0 || lengthOfLength > 4) {
41523
- throw new Error('Unsupported ASN.1 length encoding');
41524
- }
41525
- let length = 0;
41526
- let position = offset + 1;
41527
- for (let i = 0; i < lengthOfLength; i += 1) {
41528
- const byte = data[position];
41529
- if (byte === undefined) {
41530
- throw new Error('Unexpected end of ASN.1 data');
41531
- }
41532
- length = (length << 8) | byte;
41533
- position += 1;
41534
- }
41535
- return { length, nextOffset: position };
41536
- }
41537
- function readElement(data, offset, tag) {
41538
- if (data[offset] !== tag) {
41539
- throw new Error(`Unexpected ASN.1 tag: expected 0x${tag.toString(16)}, got 0x${(data[offset] ?? 0).toString(16)}`);
41540
- }
41541
- const { length, nextOffset } = readLength(data, offset + 1);
41542
- const contentOffset = nextOffset;
41543
- return {
41544
- length,
41545
- contentOffset,
41546
- nextOffset: contentOffset + length,
41547
- };
41548
- }
41549
- function parseEd25519PrivateKey(pem) {
41550
- const raw = decodePem(pem);
41551
- if (raw.length === 32) {
41552
- return raw.slice();
41553
- }
41554
- // Handle PKCS#8 structure defined in RFC 8410
41555
- const sequence = readElement(raw, 0, 0x30);
41556
- const version = readElement(raw, sequence.contentOffset, 0x02);
41557
- let offset = version.nextOffset;
41558
- const algorithm = readElement(raw, offset, 0x30);
41559
- offset = algorithm.nextOffset;
41560
- const privateKey = readElement(raw, offset, 0x04);
41561
- const privateContent = raw.subarray(privateKey.contentOffset, privateKey.contentOffset + privateKey.length);
41562
- if (privateContent.length === 32) {
41563
- return privateContent.slice();
41564
- }
41565
- if (privateContent.length >= 34 && privateContent[0] === 0x04) {
41566
- const innerLength = privateContent[1];
41567
- if (innerLength !== 32 || privateContent.length < innerLength + 2) {
41568
- throw new Error('Unexpected Ed25519 private key length');
41569
- }
41570
- return privateContent.subarray(2, 34);
41571
- }
41572
- throw new Error('Unsupported Ed25519 private key structure');
41573
- }
41574
- const textEncoder = typeof TextEncoder !== 'undefined' ? new TextEncoder() : undefined;
41575
- function encodeUtf8(value) {
41576
- if (textEncoder) {
41577
- return textEncoder.encode(value);
41578
- }
41579
- if (hasBuffer()) {
41580
- return Uint8Array.from(Buffer.from(value, 'utf8'));
41581
- }
41582
- throw new Error('No UTF-8 encoder available in this environment');
41583
- }
41584
-
41585
41592
  if (!ed25519.hashes.sha512) {
41586
41593
  ed25519.hashes.sha512 = (message) => sha2_js.sha512(message);
41587
41594
  }
@@ -42143,6 +42150,7 @@ exports.assertGrant = assertGrant;
42143
42150
  exports.basicConfig = basicConfig;
42144
42151
  exports.broadcastChannelGrantToConnectorConfig = broadcastChannelGrantToConnectorConfig;
42145
42152
  exports.camelToSnakeCase = camelToSnakeCase;
42153
+ exports.canonicalJson = canonicalJson;
42146
42154
  exports.capitalizeFirstLetter = capitalizeFirstLetter;
42147
42155
  exports.color = color;
42148
42156
  exports.compareCryptoLevels = compareCryptoLevels;
@@ -42166,12 +42174,14 @@ exports.createX25519Keypair = createX25519Keypair;
42166
42174
  exports.credentialToString = credentialToString;
42167
42175
  exports.currentTraceId = currentTraceId$1;
42168
42176
  exports.debounce = debounce;
42177
+ exports.decodeBase64Url = decodeBase64Url;
42169
42178
  exports.decodeFameDataPayload = decodeFameDataPayload;
42170
42179
  exports.deepMerge = deepMerge;
42171
42180
  exports.defaultJsonEncoder = defaultJsonEncoder;
42172
42181
  exports.delay = delay;
42173
42182
  exports.dropEmpty = dropEmpty;
42174
42183
  exports.enableLogging = enableLogging;
42184
+ exports.encodeUtf8 = encodeUtf8;
42175
42185
  exports.ensureRuntimeFactoriesRegistered = ensureRuntimeFactoriesRegistered;
42176
42186
  exports.extractId = extractId;
42177
42187
  exports.extractPoolAddressBase = extractPoolAddressBase;
@@ -42179,6 +42189,7 @@ exports.extractPoolBase = extractPoolBase;
42179
42189
  exports.filterKeysByUse = filterKeysByUse;
42180
42190
  exports.formatTimestamp = formatTimestamp;
42181
42191
  exports.formatTimestampForConsole = formatTimestampForConsole$1;
42192
+ exports.frameDigest = frameDigest;
42182
42193
  exports.getCurrentEnvelope = getCurrentEnvelope;
42183
42194
  exports.getFameRoot = getFameRoot;
42184
42195
  exports.getHttpListenerInstance = getHttpListenerInstance;
@@ -42191,6 +42202,7 @@ exports.hasCryptoSupport = hasCryptoSupport;
42191
42202
  exports.hostnameToLogical = hostnameToLogical;
42192
42203
  exports.hostnamesToLogicals = hostnamesToLogicals;
42193
42204
  exports.httpGrantToConnectorConfig = httpGrantToConnectorConfig;
42205
+ exports.immutableHeaders = immutableHeaders;
42194
42206
  exports.inPageGrantToConnectorConfig = inPageGrantToConnectorConfig;
42195
42207
  exports.isAuthInjectionStrategy = isAuthInjectionStrategy;
42196
42208
  exports.isBroadcastChannelConnectionGrant = isBroadcastChannelConnectionGrant;
@@ -486,15 +486,22 @@ function getInitialLogLevel() {
486
486
  return LogLevel.OFF;
487
487
  }
488
488
  // Check FAME_LOG_LEVEL environment variable
489
- if (isNode && typeof process !== 'undefined' && process.env.FAME_LOG_LEVEL) {
489
+ let envLevel;
490
+ if (isNode && typeof process !== 'undefined') {
491
+ envLevel = process.env.FAME_LOG_LEVEL;
492
+ }
493
+ else if (typeof window !== 'undefined' && window.__ENV__) {
494
+ envLevel = window.__ENV__.FAME_LOG_LEVEL;
495
+ }
496
+ if (envLevel) {
490
497
  try {
491
- const envLevel = process.env.FAME_LOG_LEVEL.trim().toUpperCase();
498
+ const normalized = envLevel.trim().toUpperCase();
492
499
  // Direct enum name match (e.g., "DEBUG", "INFO")
493
- if (envLevel in LogLevel) {
494
- return LogLevel[envLevel];
500
+ if (normalized in LogLevel) {
501
+ return LogLevel[normalized];
495
502
  }
496
503
  // Try alternative mappings
497
- if (envLevel === 'WARN')
504
+ if (normalized === 'WARN')
498
505
  return LogLevel.WARNING;
499
506
  }
500
507
  catch {
@@ -5364,12 +5371,12 @@ for (const [name, config] of Object.entries(SQLITE_PROFILES)) {
5364
5371
  }
5365
5372
 
5366
5373
  // This file is auto-generated during build - do not edit manually
5367
- // Generated from package.json version: 0.3.5-test.920
5374
+ // Generated from package.json version: 0.3.5-test.922
5368
5375
  /**
5369
5376
  * The package version, injected at build time.
5370
5377
  * @internal
5371
5378
  */
5372
- const VERSION = '0.3.5-test.920';
5379
+ const VERSION = '0.3.5-test.922';
5373
5380
 
5374
5381
  /**
5375
5382
  * Fame errors module - Fame protocol specific error classes
@@ -26314,6 +26321,111 @@ class SigningConfig {
26314
26321
  }
26315
26322
  }
26316
26323
 
26324
+ function hasBuffer() {
26325
+ return typeof Buffer !== 'undefined';
26326
+ }
26327
+ function readStringProperty(source, ...names) {
26328
+ if (!source || typeof source !== 'object') {
26329
+ return undefined;
26330
+ }
26331
+ for (const name of names) {
26332
+ const value = source[name];
26333
+ if (typeof value === 'string' && value.length > 0) {
26334
+ return value;
26335
+ }
26336
+ }
26337
+ return undefined;
26338
+ }
26339
+ function decodePem(pem) {
26340
+ const base64 = pem
26341
+ .replace(/-----BEGIN[^-]+-----/g, '')
26342
+ .replace(/-----END[^-]+-----/g, '')
26343
+ .replace(/\s+/g, '');
26344
+ if (typeof atob === 'function') {
26345
+ const binary = atob(base64);
26346
+ const bytes = new Uint8Array(binary.length);
26347
+ for (let i = 0; i < binary.length; i += 1) {
26348
+ bytes[i] = binary.charCodeAt(i);
26349
+ }
26350
+ return bytes;
26351
+ }
26352
+ if (hasBuffer()) {
26353
+ return Uint8Array.from(Buffer.from(base64, 'base64'));
26354
+ }
26355
+ throw new Error('Base64 decoding is not available in this environment');
26356
+ }
26357
+ function readLength(data, offset) {
26358
+ const initial = data[offset];
26359
+ if (initial === undefined) {
26360
+ throw new Error('Unexpected end of ASN.1 data');
26361
+ }
26362
+ if ((initial & 0x80) === 0) {
26363
+ return { length: initial, nextOffset: offset + 1 };
26364
+ }
26365
+ const lengthOfLength = initial & 0x7f;
26366
+ if (lengthOfLength === 0 || lengthOfLength > 4) {
26367
+ throw new Error('Unsupported ASN.1 length encoding');
26368
+ }
26369
+ let length = 0;
26370
+ let position = offset + 1;
26371
+ for (let i = 0; i < lengthOfLength; i += 1) {
26372
+ const byte = data[position];
26373
+ if (byte === undefined) {
26374
+ throw new Error('Unexpected end of ASN.1 data');
26375
+ }
26376
+ length = (length << 8) | byte;
26377
+ position += 1;
26378
+ }
26379
+ return { length, nextOffset: position };
26380
+ }
26381
+ function readElement(data, offset, tag) {
26382
+ if (data[offset] !== tag) {
26383
+ throw new Error(`Unexpected ASN.1 tag: expected 0x${tag.toString(16)}, got 0x${(data[offset] ?? 0).toString(16)}`);
26384
+ }
26385
+ const { length, nextOffset } = readLength(data, offset + 1);
26386
+ const contentOffset = nextOffset;
26387
+ return {
26388
+ length,
26389
+ contentOffset,
26390
+ nextOffset: contentOffset + length,
26391
+ };
26392
+ }
26393
+ function parseEd25519PrivateKey(pem) {
26394
+ const raw = decodePem(pem);
26395
+ if (raw.length === 32) {
26396
+ return raw.slice();
26397
+ }
26398
+ // Handle PKCS#8 structure defined in RFC 8410
26399
+ const sequence = readElement(raw, 0, 0x30);
26400
+ const version = readElement(raw, sequence.contentOffset, 0x02);
26401
+ let offset = version.nextOffset;
26402
+ const algorithm = readElement(raw, offset, 0x30);
26403
+ offset = algorithm.nextOffset;
26404
+ const privateKey = readElement(raw, offset, 0x04);
26405
+ const privateContent = raw.subarray(privateKey.contentOffset, privateKey.contentOffset + privateKey.length);
26406
+ if (privateContent.length === 32) {
26407
+ return privateContent.slice();
26408
+ }
26409
+ if (privateContent.length >= 34 && privateContent[0] === 0x04) {
26410
+ const innerLength = privateContent[1];
26411
+ if (innerLength !== 32 || privateContent.length < innerLength + 2) {
26412
+ throw new Error('Unexpected Ed25519 private key length');
26413
+ }
26414
+ return privateContent.subarray(2, 34);
26415
+ }
26416
+ throw new Error('Unsupported Ed25519 private key structure');
26417
+ }
26418
+ const textEncoder = typeof TextEncoder !== 'undefined' ? new TextEncoder() : undefined;
26419
+ function encodeUtf8(value) {
26420
+ if (textEncoder) {
26421
+ return textEncoder.encode(value);
26422
+ }
26423
+ if (hasBuffer()) {
26424
+ return Uint8Array.from(Buffer.from(value, 'utf8'));
26425
+ }
26426
+ throw new Error('No UTF-8 encoder available in this environment');
26427
+ }
26428
+
26317
26429
  // Legacy global crypto provider accessors are intentionally disabled to force
26318
26430
  // explicit dependency wiring. If a component still needs a global provider,
26319
26431
  // refactor it to accept one via configuration instead of re-enabling this code.
@@ -41476,111 +41588,6 @@ var sharedSecretTokenVerifier = /*#__PURE__*/Object.freeze({
41476
41588
  SharedSecretTokenVerifier: SharedSecretTokenVerifier
41477
41589
  });
41478
41590
 
41479
- function hasBuffer() {
41480
- return typeof Buffer !== 'undefined';
41481
- }
41482
- function readStringProperty(source, ...names) {
41483
- if (!source || typeof source !== 'object') {
41484
- return undefined;
41485
- }
41486
- for (const name of names) {
41487
- const value = source[name];
41488
- if (typeof value === 'string' && value.length > 0) {
41489
- return value;
41490
- }
41491
- }
41492
- return undefined;
41493
- }
41494
- function decodePem(pem) {
41495
- const base64 = pem
41496
- .replace(/-----BEGIN[^-]+-----/g, '')
41497
- .replace(/-----END[^-]+-----/g, '')
41498
- .replace(/\s+/g, '');
41499
- if (typeof atob === 'function') {
41500
- const binary = atob(base64);
41501
- const bytes = new Uint8Array(binary.length);
41502
- for (let i = 0; i < binary.length; i += 1) {
41503
- bytes[i] = binary.charCodeAt(i);
41504
- }
41505
- return bytes;
41506
- }
41507
- if (hasBuffer()) {
41508
- return Uint8Array.from(Buffer.from(base64, 'base64'));
41509
- }
41510
- throw new Error('Base64 decoding is not available in this environment');
41511
- }
41512
- function readLength(data, offset) {
41513
- const initial = data[offset];
41514
- if (initial === undefined) {
41515
- throw new Error('Unexpected end of ASN.1 data');
41516
- }
41517
- if ((initial & 0x80) === 0) {
41518
- return { length: initial, nextOffset: offset + 1 };
41519
- }
41520
- const lengthOfLength = initial & 0x7f;
41521
- if (lengthOfLength === 0 || lengthOfLength > 4) {
41522
- throw new Error('Unsupported ASN.1 length encoding');
41523
- }
41524
- let length = 0;
41525
- let position = offset + 1;
41526
- for (let i = 0; i < lengthOfLength; i += 1) {
41527
- const byte = data[position];
41528
- if (byte === undefined) {
41529
- throw new Error('Unexpected end of ASN.1 data');
41530
- }
41531
- length = (length << 8) | byte;
41532
- position += 1;
41533
- }
41534
- return { length, nextOffset: position };
41535
- }
41536
- function readElement(data, offset, tag) {
41537
- if (data[offset] !== tag) {
41538
- throw new Error(`Unexpected ASN.1 tag: expected 0x${tag.toString(16)}, got 0x${(data[offset] ?? 0).toString(16)}`);
41539
- }
41540
- const { length, nextOffset } = readLength(data, offset + 1);
41541
- const contentOffset = nextOffset;
41542
- return {
41543
- length,
41544
- contentOffset,
41545
- nextOffset: contentOffset + length,
41546
- };
41547
- }
41548
- function parseEd25519PrivateKey(pem) {
41549
- const raw = decodePem(pem);
41550
- if (raw.length === 32) {
41551
- return raw.slice();
41552
- }
41553
- // Handle PKCS#8 structure defined in RFC 8410
41554
- const sequence = readElement(raw, 0, 0x30);
41555
- const version = readElement(raw, sequence.contentOffset, 0x02);
41556
- let offset = version.nextOffset;
41557
- const algorithm = readElement(raw, offset, 0x30);
41558
- offset = algorithm.nextOffset;
41559
- const privateKey = readElement(raw, offset, 0x04);
41560
- const privateContent = raw.subarray(privateKey.contentOffset, privateKey.contentOffset + privateKey.length);
41561
- if (privateContent.length === 32) {
41562
- return privateContent.slice();
41563
- }
41564
- if (privateContent.length >= 34 && privateContent[0] === 0x04) {
41565
- const innerLength = privateContent[1];
41566
- if (innerLength !== 32 || privateContent.length < innerLength + 2) {
41567
- throw new Error('Unexpected Ed25519 private key length');
41568
- }
41569
- return privateContent.subarray(2, 34);
41570
- }
41571
- throw new Error('Unsupported Ed25519 private key structure');
41572
- }
41573
- const textEncoder = typeof TextEncoder !== 'undefined' ? new TextEncoder() : undefined;
41574
- function encodeUtf8(value) {
41575
- if (textEncoder) {
41576
- return textEncoder.encode(value);
41577
- }
41578
- if (hasBuffer()) {
41579
- return Uint8Array.from(Buffer.from(value, 'utf8'));
41580
- }
41581
- throw new Error('No UTF-8 encoder available in this environment');
41582
- }
41583
-
41584
41591
  if (!hashes.sha512) {
41585
41592
  hashes.sha512 = (message) => sha512(message);
41586
41593
  }
@@ -41958,4 +41965,4 @@ var websocketTransportProvisioner = /*#__PURE__*/Object.freeze({
41958
41965
  WebSocketTransportProvisionerFactory: WebSocketTransportProvisionerFactory
41959
41966
  });
41960
41967
 
41961
- export { ADMISSION_CLIENT_FACTORY_BASE_TYPE, ATTACHMENT_KEY_VALIDATOR_FACTORY_BASE_TYPE, AUTHORIZER_FACTORY_BASE_TYPE, AUTH_INJECTION_STRATEGY_FACTORY_BASE_TYPE, AnsiColor, AsyncLock, AttachmentKeyValidator, AuthInjectionStrategyFactory, AuthorizerFactory, BROADCAST_CHANNEL_CONNECTION_GRANT_TYPE, BackPressureFull, BaseAsyncConnector, BaseNodeEventListener, BindingManager, BindingStoreEntryRecord, BrowserAutoKeyCredentialProvider, BrowserWrappedKeyCredentialProvider, CERTIFICATE_MANAGER_FACTORY_BASE_TYPE, CREDENTIAL_PROVIDER_FACTORY_BASE_TYPE, CRYPTO_LEVEL_SECURITY_ORDER, CertificateManagerFactory, ConnectorConfigDefaults, ConnectorFactory, ConsoleMetricsEmitter, CryptoLevel, FACTORY_META$Z as DEFAULT_WELCOME_FACTORY_META, DefaultCryptoProvider, DefaultHttpServer, DefaultKeyManager, DefaultSecurityManager, DefaultSecurityPolicy, DefaultWelcomeService, DefaultWelcomeServiceFactory, DevFixedKeyCredentialProvider, ENCRYPTION_MANAGER_FACTORY_BASE_TYPE, ENVELOPE_SIGNER_FACTORY_BASE_TYPE, ENVELOPE_VERIFIER_FACTORY_BASE_TYPE, ENV_VAR_DEFAULT_ENCRYPTION_LEVEL, ENV_VAR_HMAC_SECRET, ENV_VAR_JWKS_URL, ENV_VAR_JWT_ALGORITHM$2 as ENV_VAR_JWT_ALGORITHM, ENV_VAR_JWT_AUDIENCE$2 as ENV_VAR_JWT_AUDIENCE, ENV_VAR_JWT_REVERSE_AUTH_AUDIENCE, ENV_VAR_JWT_REVERSE_AUTH_TRUSTED_ISSUER, ENV_VAR_JWT_TRUSTED_ISSUER, ENV_VAR_SHOW_ENVELOPES$1 as ENV_VAR_SHOW_ENVELOPES, EncryptedKeyValueStore, EncryptedStorageProviderBase, EncryptedValue, EncryptionConfiguration, EncryptionManagerFactory, EncryptionResult, EncryptionStatus, EnvCredentialProvider, EnvelopeContext, EnvelopeListenerManager, EnvelopeSecurityHandler, EnvelopeSignerFactory, EnvelopeVerifierFactory, FACTORY_META$_ as FACTORY_META, FAME_FABRIC_FACTORY_BASE_TYPE, FIXED_PREFIX_LEN, FameAuthorizedDeliveryContextSchema, FameConnectError, FameEnvironmentContext, FameError, FameMessageTooLarge, FameNode, FameNodeAuthorizationContextSchema, FameProtocolError, FameTransportClose, FlowController, GRANT_PURPOSE_NODE_ATTACH, HTTP_CONNECTION_GRANT_TYPE, HTTP_STATELESS_CONNECTOR_TYPE, HttpListener, HttpStatelessConnector, INPAGE_CONNECTION_GRANT_TYPE, INPAGE_CONNECTOR_TYPE, InMemoryBinding, InMemoryFanoutBroker, InMemoryKeyValueStore, InMemoryReadWriteChannel, InMemoryStorageProvider, InPageConnector, InPageListener, InProcessFameFabric, InProcessFameFabricFactory, IndexedDBKeyValueStore, IndexedDBStorageProvider, InvalidPassphraseError, JWKValidationError, KEY_MANAGER_FACTORY_BASE_TYPE, KEY_STORE_FACTORY_BASE_TYPE, KeyInfo, KeyManagementHandler, KeyManagerFactory, KeyStore, KeyStoreFactory, KeyValidationError, LOAD_BALANCER_STICKINESS_MANAGER_FACTORY_BASE_TYPE, LoadBalancerStickinessManagerFactory, LogLevel, LogLevelNames, MemoryMetricsEmitter, NODE_LIKE_FACTORY_BASE_TYPE, NODE_PLACEMENT_STRATEGY_FACTORY_BASE_TYPE, NoOpMetricsEmitter, NoSecurityPolicy, NodeFactory, NodePlacementStrategyFactory, NoneCredentialProvider, NoopEncryptionManager, NoopKeyValidator, NotAuthorized, PROFILE_NAME_GATED, PROFILE_NAME_GATED_CALLBACK, PROFILE_NAME_OPEN$1 as PROFILE_NAME_OPEN, PROFILE_NAME_OVERLAY, PROFILE_NAME_OVERLAY_CALLBACK, PROFILE_NAME_STRICT_OVERLAY, PromptCredentialProvider, QueueFullError, REPLICA_STICKINESS_MANAGER_FACTORY_BASE_TYPE, REQUIRED_FIELDS_BY_KTY, ReplicaStickinessManagerFactory, RootSessionManager, RouteManager, RpcMixin, RpcProxy, SEALED_ENVELOPE_NONCE_LENGTH, SEALED_ENVELOPE_OVERHEAD, SEALED_ENVELOPE_PRIVATE_KEY_LENGTH, SEALED_ENVELOPE_PUBLIC_KEY_LENGTH, SEALED_ENVELOPE_TAG_LENGTH, SECURE_CHANNEL_MANAGER_FACTORY_BASE_TYPE, SECURITY_MANAGER_FACTORY_BASE_TYPE, SECURITY_POLICY_FACTORY_BASE_TYPE, SQLiteKeyValueStore, SQLiteStorageProvider, STORAGE_PROVIDER_FACTORY_BASE_TYPE, SecretSource, SecretStoreCredentialProvider, SecureChannelFrameHandler, SecureChannelManagerFactory, SecurityAction, SecurityRequirements, Sentinel, SentinelFactory, SessionKeyCredentialProvider, SignaturePolicy, SigningConfig as SigningConfigClass, SigningConfiguration, SimpleLoadBalancerStickinessManager, SimpleLoadBalancerStickinessManagerFactory, StaticCredentialProvider, StorageAESEncryptionManager, TOKEN_ISSUER_FACTORY_BASE_TYPE, TOKEN_PROVIDER_FACTORY_BASE_TYPE, TOKEN_VERIFIER_FACTORY_BASE_TYPE, TRANSPORT_LISTENER_FACTORY_BASE_TYPE, TRANSPORT_PROVISIONER_FACTORY_BASE_TYPE, TaskSpawner, TokenIssuerFactory, TokenProviderFactory, TokenVerifierFactory, TransportListener, TransportProvisionerFactory, TtlValidationError, UpstreamSessionManager, VALID_CURVES_BY_KTY, VALID_KEY_USES, VERSION, WEBSOCKET_CONNECTION_GRANT_TYPE, WELCOME_SERVICE_FACTORY_BASE_TYPE, WebSocketCloseCode, WebSocketConnector, WebSocketListener, WebSocketState, WelcomeServiceFactory, _NoopFlowController, __runtimePluginLoader, addEnvelopeFields, addLogLevel, addTimestamp, assertConnectionGrant, assertGrant, basicConfig, broadcastChannelGrantToConnectorConfig, camelToSnakeCase, capitalizeFirstLetter, color, compareCryptoLevels, compiledPathPattern, consoleTransport, convertWildcardLogicalToDnsConstraint, createConnectorConfig, createEd25519Keypair, createHostLogicalUri, createJwksRouter, createLogicalUri, createNodeDeliveryContext, createApp as createOAuth2ServerApp, createOAuth2TokenRouter, createOpenIDConfigurationRouter, createResource, createRpcProxy, createRsaKeypair, createTransportCloseError, createX25519Keypair, credentialToString, currentTraceId$1 as currentTraceId, debounce, decodeFameDataPayload, deepMerge, defaultJsonEncoder, delay, dropEmpty, enableLogging, ensureRuntimeFactoriesRegistered, extractId, extractPoolAddressBase, extractPoolBase, filterKeysByUse, formatTimestamp, formatTimestampForConsole$1 as formatTimestampForConsole, getCurrentEnvelope, getFameRoot, getHttpListenerInstance, getInPageListenerInstance, getKeyProvider, getKeyStore, getLogger, getWebsocketListenerInstance, hasCryptoSupport, hostnameToLogical, hostnamesToLogicals, httpGrantToConnectorConfig, inPageGrantToConnectorConfig, isAuthInjectionStrategy, isBroadcastChannelConnectionGrant, isConnectionGrant, isConnectorConfig, isEnvelopeLoggingEnabled, isFameError, isFameErrorType, isGrant, isHttpConnectionGrant, isInPageConnectionGrant, isNodeLike, isPlainObject$3 as isPlainObject, isPoolAddress, isPoolLogical, isRegisterable, isTokenExpired, isTokenProvider, isTokenValid, isWebSocketConnectionGrant, jsonDumps, logicalPatternsToDnsConstraints, logicalToHostname, logicalsToHostnames, matchesPoolAddress, matchesPoolLogical, maybeAwait, nodeWelcomeRouter, nodeWelcomeRouterPlugin, normalizeBroadcastChannelConnectionGrant, normalizeEncryptionConfig, normalizeEnvelopeSnapshot, normalizeExtendedFameConfig, normalizeHttpConnectionGrant, normalizeInPageConnectionGrant, normalizeInboundCryptoRules, normalizeInboundSigningRules, normalizeOutboundCryptoRules, normalizeOutboundSigningRules, normalizePath, normalizeResponseCryptoRules, normalizeResponseSigningRules, normalizeSecretSource, normalizeSecurityRequirements, normalizeSigningConfig, normalizeWebSocketConnectionGrant, objectToBytes, operation, parseSealedEnvelope, pinoTransport, prettyModel$1 as prettyModel, registerDefaultFactories, registerDefaultKeyStoreFactory, registerNodePlacementStrategyFactory, registerRuntimeFactories, requireCryptoSupport, retryWithBackoff, main as runOAuth2Server, safeColor, sealedDecrypt, sealedEncrypt, secureDigest, setKeyStore, showEnvelopes$1 as showEnvelopes, sleep, snakeToCamelCase, stringifyNonPrimitives, supportsColor, throttle, urlsafeBase64Decode, urlsafeBase64Encode, validateCacheTtlSec, validateEncryptionKey, validateHostLogical, validateHostLogicals, validateJwkComplete, validateJwkStructure, validateJwkUseField, validateJwtTokenTtlSec, validateKeyCorrelationTtlSec, validateLogical, validateLogicalSegment, validateOAuth2TtlSec, validateSigningKey, validateTtlSec, waitForAll, waitForAllSettled, waitForAny, websocketGrantToConnectorConfig, withEnvelopeContext, withEnvelopeContextAsync, withLegacySnakeCaseKeys, withLock, withTimeout };
41968
+ export { ADMISSION_CLIENT_FACTORY_BASE_TYPE, ATTACHMENT_KEY_VALIDATOR_FACTORY_BASE_TYPE, AUTHORIZER_FACTORY_BASE_TYPE, AUTH_INJECTION_STRATEGY_FACTORY_BASE_TYPE, AnsiColor, AsyncLock, AttachmentKeyValidator, AuthInjectionStrategyFactory, AuthorizerFactory, BROADCAST_CHANNEL_CONNECTION_GRANT_TYPE, BackPressureFull, BaseAsyncConnector, BaseNodeEventListener, BindingManager, BindingStoreEntryRecord, BrowserAutoKeyCredentialProvider, BrowserWrappedKeyCredentialProvider, CERTIFICATE_MANAGER_FACTORY_BASE_TYPE, CREDENTIAL_PROVIDER_FACTORY_BASE_TYPE, CRYPTO_LEVEL_SECURITY_ORDER, CertificateManagerFactory, ConnectorConfigDefaults, ConnectorFactory, ConsoleMetricsEmitter, CryptoLevel, FACTORY_META$Z as DEFAULT_WELCOME_FACTORY_META, DefaultCryptoProvider, DefaultHttpServer, DefaultKeyManager, DefaultSecurityManager, DefaultSecurityPolicy, DefaultWelcomeService, DefaultWelcomeServiceFactory, DevFixedKeyCredentialProvider, ENCRYPTION_MANAGER_FACTORY_BASE_TYPE, ENVELOPE_SIGNER_FACTORY_BASE_TYPE, ENVELOPE_VERIFIER_FACTORY_BASE_TYPE, ENV_VAR_DEFAULT_ENCRYPTION_LEVEL, ENV_VAR_HMAC_SECRET, ENV_VAR_JWKS_URL, ENV_VAR_JWT_ALGORITHM$2 as ENV_VAR_JWT_ALGORITHM, ENV_VAR_JWT_AUDIENCE$2 as ENV_VAR_JWT_AUDIENCE, ENV_VAR_JWT_REVERSE_AUTH_AUDIENCE, ENV_VAR_JWT_REVERSE_AUTH_TRUSTED_ISSUER, ENV_VAR_JWT_TRUSTED_ISSUER, ENV_VAR_SHOW_ENVELOPES$1 as ENV_VAR_SHOW_ENVELOPES, EncryptedKeyValueStore, EncryptedStorageProviderBase, EncryptedValue, EncryptionConfiguration, EncryptionManagerFactory, EncryptionResult, EncryptionStatus, EnvCredentialProvider, EnvelopeContext, EnvelopeListenerManager, EnvelopeSecurityHandler, EnvelopeSignerFactory, EnvelopeVerifierFactory, FACTORY_META$_ as FACTORY_META, FAME_FABRIC_FACTORY_BASE_TYPE, FIXED_PREFIX_LEN, FameAuthorizedDeliveryContextSchema, FameConnectError, FameEnvironmentContext, FameError, FameMessageTooLarge, FameNode, FameNodeAuthorizationContextSchema, FameProtocolError, FameTransportClose, FlowController, GRANT_PURPOSE_NODE_ATTACH, HTTP_CONNECTION_GRANT_TYPE, HTTP_STATELESS_CONNECTOR_TYPE, HttpListener, HttpStatelessConnector, INPAGE_CONNECTION_GRANT_TYPE, INPAGE_CONNECTOR_TYPE, InMemoryBinding, InMemoryFanoutBroker, InMemoryKeyValueStore, InMemoryReadWriteChannel, InMemoryStorageProvider, InPageConnector, InPageListener, InProcessFameFabric, InProcessFameFabricFactory, IndexedDBKeyValueStore, IndexedDBStorageProvider, InvalidPassphraseError, JWKValidationError, KEY_MANAGER_FACTORY_BASE_TYPE, KEY_STORE_FACTORY_BASE_TYPE, KeyInfo, KeyManagementHandler, KeyManagerFactory, KeyStore, KeyStoreFactory, KeyValidationError, LOAD_BALANCER_STICKINESS_MANAGER_FACTORY_BASE_TYPE, LoadBalancerStickinessManagerFactory, LogLevel, LogLevelNames, MemoryMetricsEmitter, NODE_LIKE_FACTORY_BASE_TYPE, NODE_PLACEMENT_STRATEGY_FACTORY_BASE_TYPE, NoOpMetricsEmitter, NoSecurityPolicy, NodeFactory, NodePlacementStrategyFactory, NoneCredentialProvider, NoopEncryptionManager, NoopKeyValidator, NotAuthorized, PROFILE_NAME_GATED, PROFILE_NAME_GATED_CALLBACK, PROFILE_NAME_OPEN$1 as PROFILE_NAME_OPEN, PROFILE_NAME_OVERLAY, PROFILE_NAME_OVERLAY_CALLBACK, PROFILE_NAME_STRICT_OVERLAY, PromptCredentialProvider, QueueFullError, REPLICA_STICKINESS_MANAGER_FACTORY_BASE_TYPE, REQUIRED_FIELDS_BY_KTY, ReplicaStickinessManagerFactory, RootSessionManager, RouteManager, RpcMixin, RpcProxy, SEALED_ENVELOPE_NONCE_LENGTH, SEALED_ENVELOPE_OVERHEAD, SEALED_ENVELOPE_PRIVATE_KEY_LENGTH, SEALED_ENVELOPE_PUBLIC_KEY_LENGTH, SEALED_ENVELOPE_TAG_LENGTH, SECURE_CHANNEL_MANAGER_FACTORY_BASE_TYPE, SECURITY_MANAGER_FACTORY_BASE_TYPE, SECURITY_POLICY_FACTORY_BASE_TYPE, SQLiteKeyValueStore, SQLiteStorageProvider, STORAGE_PROVIDER_FACTORY_BASE_TYPE, SecretSource, SecretStoreCredentialProvider, SecureChannelFrameHandler, SecureChannelManagerFactory, SecurityAction, SecurityRequirements, Sentinel, SentinelFactory, SessionKeyCredentialProvider, SignaturePolicy, SigningConfig as SigningConfigClass, SigningConfiguration, SimpleLoadBalancerStickinessManager, SimpleLoadBalancerStickinessManagerFactory, StaticCredentialProvider, StorageAESEncryptionManager, TOKEN_ISSUER_FACTORY_BASE_TYPE, TOKEN_PROVIDER_FACTORY_BASE_TYPE, TOKEN_VERIFIER_FACTORY_BASE_TYPE, TRANSPORT_LISTENER_FACTORY_BASE_TYPE, TRANSPORT_PROVISIONER_FACTORY_BASE_TYPE, TaskSpawner, TokenIssuerFactory, TokenProviderFactory, TokenVerifierFactory, TransportListener, TransportProvisionerFactory, TtlValidationError, UpstreamSessionManager, VALID_CURVES_BY_KTY, VALID_KEY_USES, VERSION, WEBSOCKET_CONNECTION_GRANT_TYPE, WELCOME_SERVICE_FACTORY_BASE_TYPE, WebSocketCloseCode, WebSocketConnector, WebSocketListener, WebSocketState, WelcomeServiceFactory, _NoopFlowController, __runtimePluginLoader, addEnvelopeFields, addLogLevel, addTimestamp, assertConnectionGrant, assertGrant, basicConfig, broadcastChannelGrantToConnectorConfig, camelToSnakeCase, canonicalJson, capitalizeFirstLetter, color, compareCryptoLevels, compiledPathPattern, consoleTransport, convertWildcardLogicalToDnsConstraint, createConnectorConfig, createEd25519Keypair, createHostLogicalUri, createJwksRouter, createLogicalUri, createNodeDeliveryContext, createApp as createOAuth2ServerApp, createOAuth2TokenRouter, createOpenIDConfigurationRouter, createResource, createRpcProxy, createRsaKeypair, createTransportCloseError, createX25519Keypair, credentialToString, currentTraceId$1 as currentTraceId, debounce, decodeBase64Url, decodeFameDataPayload, deepMerge, defaultJsonEncoder, delay, dropEmpty, enableLogging, encodeUtf8, ensureRuntimeFactoriesRegistered, extractId, extractPoolAddressBase, extractPoolBase, filterKeysByUse, formatTimestamp, formatTimestampForConsole$1 as formatTimestampForConsole, frameDigest, getCurrentEnvelope, getFameRoot, getHttpListenerInstance, getInPageListenerInstance, getKeyProvider, getKeyStore, getLogger, getWebsocketListenerInstance, hasCryptoSupport, hostnameToLogical, hostnamesToLogicals, httpGrantToConnectorConfig, immutableHeaders, inPageGrantToConnectorConfig, isAuthInjectionStrategy, isBroadcastChannelConnectionGrant, isConnectionGrant, isConnectorConfig, isEnvelopeLoggingEnabled, isFameError, isFameErrorType, isGrant, isHttpConnectionGrant, isInPageConnectionGrant, isNodeLike, isPlainObject$3 as isPlainObject, isPoolAddress, isPoolLogical, isRegisterable, isTokenExpired, isTokenProvider, isTokenValid, isWebSocketConnectionGrant, jsonDumps, logicalPatternsToDnsConstraints, logicalToHostname, logicalsToHostnames, matchesPoolAddress, matchesPoolLogical, maybeAwait, nodeWelcomeRouter, nodeWelcomeRouterPlugin, normalizeBroadcastChannelConnectionGrant, normalizeEncryptionConfig, normalizeEnvelopeSnapshot, normalizeExtendedFameConfig, normalizeHttpConnectionGrant, normalizeInPageConnectionGrant, normalizeInboundCryptoRules, normalizeInboundSigningRules, normalizeOutboundCryptoRules, normalizeOutboundSigningRules, normalizePath, normalizeResponseCryptoRules, normalizeResponseSigningRules, normalizeSecretSource, normalizeSecurityRequirements, normalizeSigningConfig, normalizeWebSocketConnectionGrant, objectToBytes, operation, parseSealedEnvelope, pinoTransport, prettyModel$1 as prettyModel, registerDefaultFactories, registerDefaultKeyStoreFactory, registerNodePlacementStrategyFactory, registerRuntimeFactories, requireCryptoSupport, retryWithBackoff, main as runOAuth2Server, safeColor, sealedDecrypt, sealedEncrypt, secureDigest, setKeyStore, showEnvelopes$1 as showEnvelopes, sleep, snakeToCamelCase, stringifyNonPrimitives, supportsColor, throttle, urlsafeBase64Decode, urlsafeBase64Encode, validateCacheTtlSec, validateEncryptionKey, validateHostLogical, validateHostLogicals, validateJwkComplete, validateJwkStructure, validateJwkUseField, validateJwtTokenTtlSec, validateKeyCorrelationTtlSec, validateLogical, validateLogicalSegment, validateOAuth2TtlSec, validateSigningKey, validateTtlSec, waitForAll, waitForAllSettled, waitForAny, websocketGrantToConnectorConfig, withEnvelopeContext, withEnvelopeContextAsync, withLegacySnakeCaseKeys, withLock, withTimeout };
@@ -53,6 +53,8 @@ export type * from './security-manager-factory.js';
53
53
  export * from './signing/envelope-signer.js';
54
54
  export * from './signing/envelope-verifier.js';
55
55
  export { SigningConfig as SigningConfigClass, type SigningConfigOptions, } from './signing/signing-config.js';
56
+ export { canonicalJson, decodeBase64Url, frameDigest, immutableHeaders, } from './signing/eddsa-signer-verifier.js';
57
+ export { encodeUtf8, } from './signing/eddsa-utils.js';
56
58
  export * from './crypto/providers/crypto-provider.js';
57
59
  export * from './crypto/providers/default-crypto-provider.js';
58
60
  export * from './credential/credential-provider.js';
@@ -2,4 +2,4 @@
2
2
  * The package version, injected at build time.
3
3
  * @internal
4
4
  */
5
- export declare const VERSION = "0.3.5-test.920";
5
+ export declare const VERSION = "0.3.5-test.922";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@naylence/runtime",
3
- "version": "0.3.5-test.920",
3
+ "version": "0.3.5-test.922",
4
4
  "type": "module",
5
5
  "description": "Naylence Runtime - Complete TypeScript runtime",
6
6
  "author": "Naylence Dev <naylencedev@gmail.com>",