From cfdf679210041ba7f2b656286741b574682fcc0e Mon Sep 17 00:00:00 2001 From: Louis Bompart Date: Wed, 15 Jan 2025 19:56:47 -0500 Subject: [PATCH 1/4] chore: ensure atomic-angular component file is stable i.e. generation stays the same if components stay the same --- .../src/lib/stencil-generated/components.ts | 5 ----- packages/atomic-angular/scripts/build-lit.mjs | 17 +++++++++++------ 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/packages/atomic-angular/projects/atomic-angular/src/lib/stencil-generated/components.ts b/packages/atomic-angular/projects/atomic-angular/src/lib/stencil-generated/components.ts index 48ae804850d..576096dca2b 100644 --- a/packages/atomic-angular/projects/atomic-angular/src/lib/stencil-generated/components.ts +++ b/packages/atomic-angular/projects/atomic-angular/src/lib/stencil-generated/components.ts @@ -3104,8 +3104,3 @@ export class AtomicTimeframeFacet { export declare interface AtomicTimeframeFacet extends Components.AtomicTimeframeFacet {} - - - -import type {} from '@coveo/atomic/components'; -import type {} from '@coveo/atomic/components'; \ No newline at end of file diff --git a/packages/atomic-angular/scripts/build-lit.mjs b/packages/atomic-angular/scripts/build-lit.mjs index edd48bdddf4..aa43a5187cd 100644 --- a/packages/atomic-angular/scripts/build-lit.mjs +++ b/packages/atomic-angular/scripts/build-lit.mjs @@ -4,11 +4,13 @@ import { createWriteStream, readFileSync, writeFileSync } from 'fs'; const isLitDeclaration = (declaration) => declaration?.superclass?.name === 'LitElement'; const atomicAngularModuleFilePath ='projects/atomic-angular/src/lib/stencil-generated/atomic-angular.module.ts'; -const atomicAngularModuleFileContent = readFileSync(atomicAngularModuleFilePath, 'utf-8'); -const atomicAngularComponentFileStream = createWriteStream('projects/atomic-angular/src/lib/stencil-generated/components.ts', {flags: 'a'}); +const atomicAngularComponentFilePath = 'projects/atomic-angular/src/lib/stencil-generated/components.ts'; +let atomicAngularModuleFileContent = readFileSync(atomicAngularModuleFilePath, 'utf-8'); +let atomicAngularComponentFileContent = readFileSync(atomicAngularComponentFilePath, 'utf-8'); const litDeclarations = []; - +const startTag = '//#region Lit Declarations'; +const endTag = '//#endregion Lit Declarations'; const declarationToProxyCmp = (declaration) => ` @ProxyCmp({ @@ -31,6 +33,7 @@ export class ${declaration.name} { export declare interface ${declaration.name} extends Lit${declaration.name} {} ` +atomicAngularComponentFileContent = atomicAngularComponentFileContent.replace(new RegExp(`${startTag}.*?${endTag}`, 'gm'), '').trimEnd() + `\n\n${startTag}\n`; const declarationToLitImport = (declaration) => `${declaration.name} as Lit${declaration.name}`; @@ -39,14 +42,14 @@ const litImports = [] for (const module of cem.modules) { for (const declaration of module.declarations) { if (isLitDeclaration(declaration)) { - atomicAngularComponentFileStream.write(declarationToProxyCmp(declaration)); + atomicAngularComponentFileContent += declarationToProxyCmp(declaration); litImports.push(declarationToLitImport(declaration)); litDeclarations.push(`${declaration.name}`); } } } -atomicAngularComponentFileStream.write(`\nimport type {${litImports.join(',')}} from '@coveo/atomic/components';`); -atomicAngularComponentFileStream.end(); + +atomicAngularComponentFileContent+=`\n${litDeclarations.join('\n')}\nimport type {${litImports.join(',')}} from '@coveo/atomic/components';\n${endTag}`; if(litDeclarations.length > 0) { @@ -56,4 +59,6 @@ if(litDeclarations.length > 0) { .replace(/const DECLARATIONS = \[\n/m, `const DECLARATIONS = [\n${litDeclarations.join(',\n')},\n`) .replace(/^import \{$/m, `import {\n${litDeclarations.join(',\n')},`) ); + + writeFileSync(atomicAngularComponentFilePath, atomicAngularComponentFileContent); } \ No newline at end of file From d61b764538e3c109cd94dc5c6095be0eb3548d6a Mon Sep 17 00:00:00 2001 From: Louis Bompart Date: Wed, 15 Jan 2025 20:34:41 -0500 Subject: [PATCH 2/4] Update packages/atomic-angular/scripts/build-lit.mjs --- packages/atomic-angular/scripts/build-lit.mjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/atomic-angular/scripts/build-lit.mjs b/packages/atomic-angular/scripts/build-lit.mjs index aa43a5187cd..4024637fd01 100644 --- a/packages/atomic-angular/scripts/build-lit.mjs +++ b/packages/atomic-angular/scripts/build-lit.mjs @@ -60,5 +60,5 @@ if(litDeclarations.length > 0) { .replace(/^import \{$/m, `import {\n${litDeclarations.join(',\n')},`) ); - writeFileSync(atomicAngularComponentFilePath, atomicAngularComponentFileContent); + writeFileSync(atomicAngularComponentFilePath, atomicAngularComponentFileContent.trimEnd()+'\n'); } \ No newline at end of file From d9405fad6c52e3fe80e1c8fb7ac24da9860f85e7 Mon Sep 17 00:00:00 2001 From: Louis Bompart Date: Thu, 16 Jan 2025 13:30:39 -0500 Subject: [PATCH 3/4] stable --- .../atomic-angular/src/lib/stencil-generated/components.ts | 2 ++ packages/atomic-angular/scripts/build-lit.mjs | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/atomic-angular/projects/atomic-angular/src/lib/stencil-generated/components.ts b/packages/atomic-angular/projects/atomic-angular/src/lib/stencil-generated/components.ts index 576096dca2b..0187e732e3d 100644 --- a/packages/atomic-angular/projects/atomic-angular/src/lib/stencil-generated/components.ts +++ b/packages/atomic-angular/projects/atomic-angular/src/lib/stencil-generated/components.ts @@ -3104,3 +3104,5 @@ export class AtomicTimeframeFacet { export declare interface AtomicTimeframeFacet extends Components.AtomicTimeframeFacet {} + + diff --git a/packages/atomic-angular/scripts/build-lit.mjs b/packages/atomic-angular/scripts/build-lit.mjs index 4024637fd01..c5235bf9c78 100644 --- a/packages/atomic-angular/scripts/build-lit.mjs +++ b/packages/atomic-angular/scripts/build-lit.mjs @@ -60,5 +60,5 @@ if(litDeclarations.length > 0) { .replace(/^import \{$/m, `import {\n${litDeclarations.join(',\n')},`) ); - writeFileSync(atomicAngularComponentFilePath, atomicAngularComponentFileContent.trimEnd()+'\n'); + writeFileSync(atomicAngularComponentFilePath, atomicAngularComponentFileContent.trimEnd()); } \ No newline at end of file From 209768caaf33451517c1b7e1b24092daa8ede346 Mon Sep 17 00:00:00 2001 From: Louis Bompart Date: Thu, 16 Jan 2025 14:30:41 -0500 Subject: [PATCH 4/4] Update packages/atomic-angular/projects/atomic-angular/src/lib/stencil-generated/components.ts --- .../atomic-angular/src/lib/stencil-generated/components.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/atomic-angular/projects/atomic-angular/src/lib/stencil-generated/components.ts b/packages/atomic-angular/projects/atomic-angular/src/lib/stencil-generated/components.ts index 4e719a3e9d4..0187e732e3d 100644 --- a/packages/atomic-angular/projects/atomic-angular/src/lib/stencil-generated/components.ts +++ b/packages/atomic-angular/projects/atomic-angular/src/lib/stencil-generated/components.ts @@ -3106,4 +3106,3 @@ export class AtomicTimeframeFacet { export declare interface AtomicTimeframeFacet extends Components.AtomicTimeframeFacet {} -