yarlo-cli 0.1.1 → 0.1.2

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":"plugin-loader.d.ts","sourceRoot":"","sources":["../../source/core/plugin-loader.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,WAAW,EACX,kBAAkB,EAClB,aAAa,EACb,WAAW,EACZ,MAAM,aAAa,CAAC;AAqBrB,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IACrC,KAAK,EAAE,GAAG,CAAC,MAAM,WAAW,EAAE,KAAK,CAAC,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACnF,OAAO,EAAE,WAAW,EAAE,CAAC;CACxB;AAED,wBAAsB,WAAW,CAC/B,WAAW,EAAE,MAAM,EAAE,EACrB,GAAG,EAAE,kBAAkB,GACtB,OAAO,CAAC,aAAa,CAAC,CA8CxB;AAED,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,aAAa,EACtB,IAAI,EAAE,MAAM,EAAE,EACd,GAAG,EAAE,kBAAkB,GACtB,OAAO,CAAC,IAAI,CAAC,CAEf"}
1
+ {"version":3,"file":"plugin-loader.d.ts","sourceRoot":"","sources":["../../source/core/plugin-loader.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,WAAW,EACX,kBAAkB,EAClB,aAAa,EACb,WAAW,EACZ,MAAM,aAAa,CAAC;AAqErB,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IACrC,KAAK,EAAE,GAAG,CAAC,MAAM,WAAW,EAAE,KAAK,CAAC,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACnF,OAAO,EAAE,WAAW,EAAE,CAAC;CACxB;AAED,wBAAsB,WAAW,CAC/B,WAAW,EAAE,MAAM,EAAE,EACrB,GAAG,EAAE,kBAAkB,GACtB,OAAO,CAAC,aAAa,CAAC,CA8CxB;AAED,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,aAAa,EACtB,IAAI,EAAE,MAAM,EAAE,EACd,GAAG,EAAE,kBAAkB,GACtB,OAAO,CAAC,IAAI,CAAC,CAEf"}
@@ -1,18 +1,52 @@
1
- import { createRequire } from "node:module";
1
+ import fs from "node:fs/promises";
2
2
  import path from "node:path";
3
3
  import { pathToFileURL } from "node:url";
4
4
  /**
5
- * Resolves and dynamically imports a plugin package from the project's node_modules
6
- * (not from the yarlo-cli install location).
5
+ * Picks the ESM (or shared) entry from package.json "exports" for dynamic import().
6
+ * Avoids require.resolve(), which uses the "require" condition and fails when only "import" is set.
7
+ */
8
+ function resolveExportsEntry(exportsField) {
9
+ if (!exportsField)
10
+ return undefined;
11
+ if (typeof exportsField === "string")
12
+ return exportsField;
13
+ const root = exportsField["."];
14
+ if (typeof root === "string")
15
+ return root;
16
+ if (root && typeof root === "object") {
17
+ const o = root;
18
+ return o.import ?? o.default ?? o.module ?? o.require;
19
+ }
20
+ return undefined;
21
+ }
22
+ /**
23
+ * Resolves the main module file path for a dependency in projectDir/node_modules.
24
+ *
25
+ * @param projectDir - Project root (parent of .yarlo)
26
+ * @param packageName - npm package name
27
+ * @returns Absolute path to the entry .js file
28
+ */
29
+ async function resolveProjectPackageEntry(projectDir, packageName) {
30
+ const pkgJsonPath = path.join(projectDir, "node_modules", packageName, "package.json");
31
+ const raw = await fs.readFile(pkgJsonPath, "utf-8");
32
+ const pkg = JSON.parse(raw);
33
+ const fromExports = resolveExportsEntry(pkg.exports);
34
+ const rel = fromExports ?? pkg.module ?? pkg.main;
35
+ if (!rel) {
36
+ throw new Error(`No entry (exports/main) in ${packageName}/package.json`);
37
+ }
38
+ return path.resolve(path.dirname(pkgJsonPath), rel);
39
+ }
40
+ /**
41
+ * Dynamically imports a plugin from the project's node_modules (not from yarlo-cli).
7
42
  *
8
43
  * @param packageName - Full npm package name (e.g. yarlo-plugin-board)
9
- * @param configDir - Absolute path to the .yarlo directory
44
+ * @param projectDir - Absolute path to the project root
10
45
  * @returns The module namespace object
11
46
  */
12
- async function importPluginPackage(packageName, configDir) {
13
- const requireFromProject = createRequire(path.join(configDir, "config.yml"));
14
- const resolved = requireFromProject.resolve(packageName);
15
- return import(pathToFileURL(resolved).href);
47
+ async function importPluginPackage(packageName, projectDir) {
48
+ const entry = await resolveProjectPackageEntry(projectDir, packageName);
49
+ return import(pathToFileURL(entry).href);
16
50
  }
17
51
  export async function loadPlugins(pluginNames, ctx) {
18
52
  const commands = new Map();
@@ -21,7 +55,7 @@ export async function loadPlugins(pluginNames, ctx) {
21
55
  const packageBase = "yarlo-plugin-";
22
56
  for (const name of pluginNames) {
23
57
  try {
24
- const mod = await importPluginPackage(`${packageBase}${name}`, ctx.configDir);
58
+ const mod = await importPluginPackage(`${packageBase}${name}`, ctx.projectDir);
25
59
  const plugin = (mod.default ?? mod);
26
60
  if (plugin.activate) {
27
61
  await plugin.activate(ctx);
@@ -1 +1 @@
1
- {"version":3,"file":"plugin-loader.js","sourceRoot":"","sources":["../../source/core/plugin-loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAQzC;;;;;;;GAOG;AACH,KAAK,UAAU,mBAAmB,CAChC,WAAmB,EACnB,SAAiB;IAEjB,MAAM,kBAAkB,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC;IAC7E,MAAM,QAAQ,GAAG,kBAAkB,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IACzD,OAAO,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,IAAI,CAEzC,CAAC;AACJ,CAAC;AAQD,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,WAAqB,EACrB,GAAuB;IAEvB,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAyB,CAAC;IAClD,MAAM,KAAK,GAAG,IAAI,GAAG,EAGlB,CAAC;IACJ,MAAM,OAAO,GAAkB,EAAE,CAAC;IAElC,MAAM,WAAW,GAAG,eAAe,CAAC;IAEpC,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;QAC/B,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,mBAAmB,CAAC,GAAG,WAAW,GAAG,IAAI,EAAE,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;YAC9E,MAAM,MAAM,GAAgB,CAAC,GAAG,CAAC,OAAO,IAAI,GAAG,CAAgB,CAAC;YAEhE,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;gBACpB,MAAM,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YAC7B,CAAC;YAED,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;gBACpB,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;oBAClC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;gBAC9B,CAAC;YACH,CAAC;YAED,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;gBACjB,KAAK,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;oBAC5D,MAAM,GAAG,GAAG,KAA0B,CAAC;oBACvC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;wBACpB,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;oBACrB,CAAC;oBACD,KAAK,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC,IAAI,CAAC,OAAuD,CAAC,CAAC;gBAChF,CAAC;YACH,CAAC;YAED,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACvB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GACX,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACzD,OAAO,CAAC,KAAK,CACX,0BAA0B,IAAI,MAAM,OAAO,EAAE,CAC9C,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;AACtC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,OAAsB,EACtB,IAAc,EACd,GAAuB;IAEvB,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AAC/B,CAAC"}
1
+ {"version":3,"file":"plugin-loader.js","sourceRoot":"","sources":["../../source/core/plugin-loader.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "yarlo-cli",
3
- "version": "0.1.1",
3
+ "version": "0.1.2",
4
4
  "description": "Yet Another Repo Local Organizer — Local task management using markdown with YAML frontmatter",
5
5
  "type": "module",
6
6
  "license": "PolyForm-Noncommercial-1.0.0",
@@ -40,7 +40,7 @@
40
40
  "slugify": "^1.6.6",
41
41
  "yaml": "^2.7.0",
42
42
  "zod": "^3.24.0",
43
- "yarlo-types": "0.1.1"
43
+ "yarlo-types": "0.1.2"
44
44
  },
45
45
  "devDependencies": {
46
46
  "@types/node": "^25.5.2",