SeoDomFirstRuntimeArtifact.create constructor

SeoDomFirstRuntimeArtifact.create({
  1. required SeoDomFirstApplicationRuntime reference,
  2. required String javascript,
  3. required String dartVersion,
})

Creates and verifies an artifact from compiler output.

Implementation

factory SeoDomFirstRuntimeArtifact.create({
  required SeoDomFirstApplicationRuntime reference,
  required String javascript,
  required String dartVersion,
}) {
  final encoded = utf8.encode(javascript);
  if (encoded.isEmpty || encoded.length > seoDomFirstRuntimeMaxBytes) {
    throw StateError(
      'Runtime "${reference.id}" exceeds its uncompressed size budget.',
    );
  }
  final manifest = SeoDomFirstRuntimeManifest(
    schemaVersion: seoDomFirstRuntimeManifestSchema,
    id: reference.id,
    kind: reference.kind,
    dartVersion: dartVersion,
    sha256: sha256.convert(encoded).toString(),
    bytes: encoded.length,
    gzipBytes: GZipCodec(level: 9).encode(encoded).length,
  );
  return SeoDomFirstRuntimeArtifact.verify(
    reference: reference,
    manifest: manifest,
    javascript: javascript,
  );
}