@diquattro/cfnassets 0.6.4 → 0.6.6

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.
@@ -1 +1 @@
1
- {"version":3,"file":"getFolderEntries.d.ts","sourceRoot":"","sources":["../../../src/core/zip/getFolderEntries.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,MAAM,WAAW,oBAAoB;IACnC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,wBAAuB,gBAAgB,CAAC,EACtC,WAAW,EAAE,eAAqB,EAClC,MAAM,EACN,MAAM,EAAE,WAAW,GACpB,EAAE,oBAAoB,GAAG,qBAAqB,CAAC,aAAa,CAAC,CA8B7D"}
1
+ {"version":3,"file":"getFolderEntries.d.ts","sourceRoot":"","sources":["../../../src/core/zip/getFolderEntries.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,MAAM,WAAW,oBAAoB;IACnC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,wBAAuB,gBAAgB,CAAC,EACtC,WAAW,EAAE,eAAqB,EAClC,MAAM,EACN,MAAM,EAAE,WAAW,GACpB,EAAE,oBAAoB,GAAG,qBAAqB,CAAC,aAAa,CAAC,CAuC7D"}
@@ -1,5 +1,5 @@
1
1
  import { createReadStream } from 'fs';
2
- import { readdir } from 'fs/promises';
2
+ import { readdir, stat } from 'fs/promises';
3
3
  import ignore from 'ignore';
4
4
  import { join, relative, resolve } from 'path';
5
5
  export async function* getFolderEntries({ archivePath: archiveBasePath = '/', source, ignore: ignorePaths, }) {
@@ -10,17 +10,25 @@ export async function* getFolderEntries({ archivePath: archiveBasePath = '/', so
10
10
  const entries = await readdir(curr, { withFileTypes: true });
11
11
  for (const entry of entries) {
12
12
  const entryPath = join(curr, entry.name);
13
+ // For symlinks, follow them to get the real type
14
+ let isDir = entry.isDirectory();
15
+ let isFile = entry.isFile();
16
+ if (entry.isSymbolicLink()) {
17
+ const realStat = await stat(entryPath);
18
+ isDir = realStat.isDirectory();
19
+ isFile = realStat.isFile();
20
+ }
13
21
  let archivePath = relative(source, entryPath);
14
- if (entry.isDirectory()) {
22
+ if (isDir) {
15
23
  archivePath += '/';
16
24
  }
17
25
  if (ig.ignores(archivePath)) {
18
26
  continue;
19
27
  }
20
- if (entry.isDirectory()) {
28
+ if (isDir) {
21
29
  work.push(entryPath);
22
30
  }
23
- else if (entry.isFile()) {
31
+ else if (isFile) {
24
32
  yield {
25
33
  archivePath: join(archiveBasePath, archivePath),
26
34
  content: () => createReadStream(entryPath),
@@ -1 +1 @@
1
- {"version":3,"file":"getFolderEntries.js","sourceRoot":"","sources":["../../../src/core/zip/getFolderEntries.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,IAAI,CAAC;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtC,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAS/C,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC,gBAAgB,CAAC,EACtC,WAAW,EAAE,eAAe,GAAG,GAAG,EAClC,MAAM,EACN,MAAM,EAAE,WAAW,GACE;IACrB,MAAM,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;IAC/B,MAAM,EAAE,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC;IAEnD,OAAO,IAAI,CAAC,MAAM,EAAE;QAClB,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAY,CAAC;QAElC,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QAE7D,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE;YAC3B,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YAEzC,IAAI,WAAW,GAAG,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;YAC9C,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE;gBACvB,WAAW,IAAI,GAAG,CAAC;aACpB;YACD,IAAI,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE;gBAC3B,SAAS;aACV;YAED,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE;gBACvB,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;aACtB;iBAAM,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE;gBACzB,MAAM;oBACJ,WAAW,EAAE,IAAI,CAAC,eAAe,EAAE,WAAW,CAAC;oBAC/C,OAAO,EAAE,GAAG,EAAE,CAAC,gBAAgB,CAAC,SAAS,CAAC;iBAC3C,CAAC;aACH;SACF;KACF;AACH,CAAC"}
1
+ {"version":3,"file":"getFolderEntries.js","sourceRoot":"","sources":["../../../src/core/zip/getFolderEntries.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,IAAI,CAAC;AACtC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAS/C,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC,gBAAgB,CAAC,EACtC,WAAW,EAAE,eAAe,GAAG,GAAG,EAClC,MAAM,EACN,MAAM,EAAE,WAAW,GACE;IACrB,MAAM,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;IAC/B,MAAM,EAAE,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC;IAEnD,OAAO,IAAI,CAAC,MAAM,EAAE;QAClB,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAY,CAAC;QAElC,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QAE7D,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE;YAC3B,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YAEzC,iDAAiD;YACjD,IAAI,KAAK,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;YAChC,IAAI,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;YAC5B,IAAI,KAAK,CAAC,cAAc,EAAE,EAAE;gBAC1B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,CAAC;gBACvC,KAAK,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;gBAC/B,MAAM,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC;aAC5B;YAED,IAAI,WAAW,GAAG,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;YAC9C,IAAI,KAAK,EAAE;gBACT,WAAW,IAAI,GAAG,CAAC;aACpB;YACD,IAAI,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE;gBAC3B,SAAS;aACV;YAED,IAAI,KAAK,EAAE;gBACT,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;aACtB;iBAAM,IAAI,MAAM,EAAE;gBACjB,MAAM;oBACJ,WAAW,EAAE,IAAI,CAAC,eAAe,EAAE,WAAW,CAAC;oBAC/C,OAAO,EAAE,GAAG,EAAE,CAAC,gBAAgB,CAAC,SAAS,CAAC;iBAC3C,CAAC;aACH;SACF;KACF;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"getPackageEntries.d.ts","sourceRoot":"","sources":["../../../src/core/zip/getPackageEntries.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,MAAM,WAAW,qBAAqB;IACpC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,wBAAuB,iBAAiB,CAAC,EACvC,WAA4B,EAC5B,WAAW,EACX,eAAe,EACf,eAAe,EACf,WAAW,EACX,eAAe,EACf,YAAY,GACb,EAAE,qBAAqB,GAAG,qBAAqB,CAAC,aAAa,CAAC,CA6E9D"}
1
+ {"version":3,"file":"getPackageEntries.d.ts","sourceRoot":"","sources":["../../../src/core/zip/getPackageEntries.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,MAAM,WAAW,qBAAqB;IACpC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,wBAAuB,iBAAiB,CAAC,EACvC,WAA4B,EAC5B,WAAW,EACX,eAAe,EACf,eAAe,EACf,WAAW,EACX,eAAe,EACf,YAAY,GACb,EAAE,qBAAqB,GAAG,qBAAqB,CAAC,aAAa,CAAC,CAsH9D"}
@@ -3,6 +3,7 @@ import childProc from 'child_process';
3
3
  import { copyFile, readFile, writeFile } from 'fs/promises';
4
4
  import { basename, join } from 'path';
5
5
  import { temporaryDirectory } from 'tempy';
6
+ import { parse as parseYaml } from 'yaml';
6
7
  import { getFolderEntries } from './getFolderEntries.js';
7
8
  export async function* getPackageEntries({ archivePath = 'node_modules', ignorePaths, packageLockPath, packageFilePath, packageArch, packagePlatform, packageNames, }) {
8
9
  let exec;
@@ -64,10 +65,40 @@ export async function* getPackageEntries({ archivePath = 'node_modules', ignoreP
64
65
  });
65
66
  });
66
67
  console.log(`\n`);
67
- yield* getFolderEntries({
68
- source: join(outDir, 'node_modules'),
69
- archivePath,
70
- ignore: ignorePaths,
71
- });
68
+ const nodeModulesDir = join(outDir, 'node_modules');
69
+ const isPnpm = lockBasename === 'pnpm-lock.yaml';
70
+ if (isPnpm) {
71
+ // For pnpm, we need to read .modules.yaml and yield entries for all hoisted dependencies
72
+ // pnpm stores packages in .pnpm/{name}@{version}/node_modules/{name}/
73
+ // and lists what should be hoisted in .modules.yaml
74
+ const modulesYamlPath = join(nodeModulesDir, '.modules.yaml');
75
+ const modulesYaml = parseYaml(await readFile(modulesYamlPath, 'utf-8'));
76
+ const hoisted = modulesYaml.hoistedDependencies || {};
77
+ // First yield the .pnpm directory contents (the actual package files)
78
+ yield* getFolderEntries({
79
+ source: join(nodeModulesDir, '.pnpm'),
80
+ archivePath: join(archivePath, '.pnpm'),
81
+ ignore: ignorePaths,
82
+ });
83
+ // Then yield entries for each hoisted dependency at root level
84
+ for (const [packageAtVersion, aliases] of Object.entries(hoisted)) {
85
+ for (const packageName of Object.keys(aliases)) {
86
+ const sourcePath = join(nodeModulesDir, '.pnpm', packageAtVersion, 'node_modules', packageName);
87
+ yield* getFolderEntries({
88
+ source: sourcePath,
89
+ archivePath: join(archivePath, packageName),
90
+ ignore: ignorePaths,
91
+ });
92
+ }
93
+ }
94
+ }
95
+ else {
96
+ // For npm/yarn, just copy the whole node_modules directory
97
+ yield* getFolderEntries({
98
+ source: nodeModulesDir,
99
+ archivePath,
100
+ ignore: ignorePaths,
101
+ });
102
+ }
72
103
  }
73
104
  //# sourceMappingURL=getPackageEntries.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"getPackageEntries.js","sourceRoot":"","sources":["../../../src/core/zip/getPackageEntries.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"getPackageEntries.js","sourceRoot":"","sources":["../../../src/core/zip/getPackageEntries.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@diquattro/cfnassets",
3
- "version": "0.6.4",
3
+ "version": "0.6.6",
4
4
  "description": "Build asset zip packages for deployment. Fork of @awboost/cfnassets with pnpm support.",
5
5
  "type": "module",
6
6
  "repository": {
@@ -66,6 +66,7 @@
66
66
  "ignore": "^5.2.0",
67
67
  "rollup": "^2.73.0",
68
68
  "tempy": "^3.0.0",
69
- "tiny-typed-emitter": "^2.1.0"
69
+ "tiny-typed-emitter": "^2.1.0",
70
+ "yaml": "^2.8.2"
70
71
  }
71
72
  }
@@ -1,5 +1,5 @@
1
1
  import { createReadStream } from 'fs';
2
- import { readdir } from 'fs/promises';
2
+ import { readdir, stat } from 'fs/promises';
3
3
  import ignore from 'ignore';
4
4
  import { join, relative, resolve } from 'path';
5
5
  import { ZipAssetEntry } from './ZipAssetEntry.js';
@@ -26,17 +26,26 @@ export async function* getFolderEntries({
26
26
  for (const entry of entries) {
27
27
  const entryPath = join(curr, entry.name);
28
28
 
29
+ // For symlinks, follow them to get the real type
30
+ let isDir = entry.isDirectory();
31
+ let isFile = entry.isFile();
32
+ if (entry.isSymbolicLink()) {
33
+ const realStat = await stat(entryPath);
34
+ isDir = realStat.isDirectory();
35
+ isFile = realStat.isFile();
36
+ }
37
+
29
38
  let archivePath = relative(source, entryPath);
30
- if (entry.isDirectory()) {
39
+ if (isDir) {
31
40
  archivePath += '/';
32
41
  }
33
42
  if (ig.ignores(archivePath)) {
34
43
  continue;
35
44
  }
36
45
 
37
- if (entry.isDirectory()) {
46
+ if (isDir) {
38
47
  work.push(entryPath);
39
- } else if (entry.isFile()) {
48
+ } else if (isFile) {
40
49
  yield {
41
50
  archivePath: join(archiveBasePath, archivePath),
42
51
  content: () => createReadStream(entryPath),
@@ -3,6 +3,7 @@ import childProc from 'child_process';
3
3
  import { copyFile, readFile, writeFile } from 'fs/promises';
4
4
  import { basename, join } from 'path';
5
5
  import { temporaryDirectory } from 'tempy';
6
+ import { parse as parseYaml } from 'yaml';
6
7
  import { getFolderEntries } from './getFolderEntries.js';
7
8
  import { ZipAssetEntry } from './ZipAssetEntry.js';
8
9
 
@@ -96,9 +97,50 @@ export async function* getPackageEntries({
96
97
 
97
98
  console.log(`\n`);
98
99
 
99
- yield* getFolderEntries({
100
- source: join(outDir, 'node_modules'),
101
- archivePath,
102
- ignore: ignorePaths,
103
- });
100
+ const nodeModulesDir = join(outDir, 'node_modules');
101
+ const isPnpm = lockBasename === 'pnpm-lock.yaml';
102
+
103
+ if (isPnpm) {
104
+ // For pnpm, we need to read .modules.yaml and yield entries for all hoisted dependencies
105
+ // pnpm stores packages in .pnpm/{name}@{version}/node_modules/{name}/
106
+ // and lists what should be hoisted in .modules.yaml
107
+ const modulesYamlPath = join(nodeModulesDir, '.modules.yaml');
108
+ const modulesYaml = parseYaml(await readFile(modulesYamlPath, 'utf-8')) as {
109
+ hoistedDependencies?: Record<string, Record<string, string>>;
110
+ };
111
+
112
+ const hoisted = modulesYaml.hoistedDependencies || {};
113
+
114
+ // First yield the .pnpm directory contents (the actual package files)
115
+ yield* getFolderEntries({
116
+ source: join(nodeModulesDir, '.pnpm'),
117
+ archivePath: join(archivePath, '.pnpm'),
118
+ ignore: ignorePaths,
119
+ });
120
+
121
+ // Then yield entries for each hoisted dependency at root level
122
+ for (const [packageAtVersion, aliases] of Object.entries(hoisted)) {
123
+ for (const packageName of Object.keys(aliases)) {
124
+ const sourcePath = join(
125
+ nodeModulesDir,
126
+ '.pnpm',
127
+ packageAtVersion,
128
+ 'node_modules',
129
+ packageName,
130
+ );
131
+ yield* getFolderEntries({
132
+ source: sourcePath,
133
+ archivePath: join(archivePath, packageName),
134
+ ignore: ignorePaths,
135
+ });
136
+ }
137
+ }
138
+ } else {
139
+ // For npm/yarn, just copy the whole node_modules directory
140
+ yield* getFolderEntries({
141
+ source: nodeModulesDir,
142
+ archivePath,
143
+ ignore: ignorePaths,
144
+ });
145
+ }
104
146
  }