@deploid/core 2.0.0 → 2.0.1
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.
- package/dist/app-api.d.ts +24 -0
- package/dist/app-api.d.ts.map +1 -0
- package/dist/app-api.js +43 -0
- package/dist/app-api.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/plugin-loader.d.ts.map +1 -1
- package/dist/plugin-loader.js +6 -0
- package/dist/plugin-loader.js.map +1 -1
- package/package.json +1 -1
- package/src/app-api.ts +67 -0
- package/src/index.ts +1 -1
- package/src/plugin-loader.ts +7 -0
- package/tsconfig.tsbuildinfo +1 -1
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { type PipelineContext } from './pipeline.js';
|
|
2
|
+
import type { DeploidConfig } from './types.js';
|
|
3
|
+
export interface CommandRunOptions {
|
|
4
|
+
cwd?: string;
|
|
5
|
+
config?: DeploidConfig;
|
|
6
|
+
debug?: boolean;
|
|
7
|
+
contextExtras?: Record<string, unknown>;
|
|
8
|
+
}
|
|
9
|
+
export interface DoctorRunOptions extends CommandRunOptions {
|
|
10
|
+
doctorOptions?: {
|
|
11
|
+
json?: boolean;
|
|
12
|
+
markdown?: boolean;
|
|
13
|
+
ci?: boolean;
|
|
14
|
+
summary?: boolean;
|
|
15
|
+
verbose?: boolean;
|
|
16
|
+
projectOnly?: boolean;
|
|
17
|
+
fix?: boolean;
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
export declare function createFallbackConfig(): DeploidConfig;
|
|
21
|
+
export declare function loadConfigOptional(cwd?: string, fallback?: DeploidConfig): Promise<DeploidConfig>;
|
|
22
|
+
export declare function runPluginCommand(pluginName: string, options?: CommandRunOptions): Promise<PipelineContext>;
|
|
23
|
+
export declare function runDoctorCommand(options?: DoctorRunOptions): Promise<PipelineContext>;
|
|
24
|
+
//# sourceMappingURL=app-api.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app-api.d.ts","sourceRoot":"","sources":["../src/app-api.ts"],"names":[],"mappings":"AAAA,OAAO,EAA8B,KAAK,eAAe,EAAE,MAAM,eAAe,CAAC;AAGjF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD,MAAM,WAAW,iBAAiB;IAChC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACzC;AAED,MAAM,WAAW,gBAAiB,SAAQ,iBAAiB;IACzD,aAAa,CAAC,EAAE;QACd,IAAI,CAAC,EAAE,OAAO,CAAC;QACf,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,EAAE,CAAC,EAAE,OAAO,CAAC;QACb,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,WAAW,CAAC,EAAE,OAAO,CAAC;QACtB,GAAG,CAAC,EAAE,OAAO,CAAC;KACf,CAAC;CACH;AAED,wBAAgB,oBAAoB,IAAI,aAAa,CAOpD;AAED,wBAAsB,kBAAkB,CAAC,GAAG,GAAE,MAAsB,EAAE,QAAQ,GAAE,aAAsC,GAAG,OAAO,CAAC,aAAa,CAAC,CAM9I;AAED,wBAAsB,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,GAAE,iBAAsB,GAAG,OAAO,CAAC,eAAe,CAAC,CAYpH;AAED,wBAAsB,gBAAgB,CAAC,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAAC,eAAe,CAAC,CAW/F"}
|
package/dist/app-api.js
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { createContext, runPipeline } from './pipeline.js';
|
|
2
|
+
import { loadConfig } from './config.js';
|
|
3
|
+
import { loadPlugin } from './plugin-loader.js';
|
|
4
|
+
export function createFallbackConfig() {
|
|
5
|
+
return {
|
|
6
|
+
appName: 'Deploid project',
|
|
7
|
+
appId: 'dev.deploid.placeholder',
|
|
8
|
+
web: { framework: 'static', buildCommand: 'echo "deploid"', webDir: 'public' },
|
|
9
|
+
android: { packaging: 'capacitor' }
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
export async function loadConfigOptional(cwd = process.cwd(), fallback = createFallbackConfig()) {
|
|
13
|
+
try {
|
|
14
|
+
return await loadConfig(cwd);
|
|
15
|
+
}
|
|
16
|
+
catch {
|
|
17
|
+
return fallback;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
export async function runPluginCommand(pluginName, options = {}) {
|
|
21
|
+
const cwd = options.cwd || process.cwd();
|
|
22
|
+
const config = options.config || await loadConfig(cwd);
|
|
23
|
+
const ctx = createContext(cwd, config, options.debug);
|
|
24
|
+
if (options.contextExtras) {
|
|
25
|
+
Object.assign(ctx, options.contextExtras);
|
|
26
|
+
}
|
|
27
|
+
const step = await loadPlugin(pluginName, config);
|
|
28
|
+
await runPipeline(ctx, [step]);
|
|
29
|
+
return ctx;
|
|
30
|
+
}
|
|
31
|
+
export async function runDoctorCommand(options = {}) {
|
|
32
|
+
const cwd = options.cwd || process.cwd();
|
|
33
|
+
const config = options.config || await loadConfigOptional(cwd);
|
|
34
|
+
return runPluginCommand('doctor', {
|
|
35
|
+
cwd,
|
|
36
|
+
config,
|
|
37
|
+
debug: options.debug,
|
|
38
|
+
contextExtras: {
|
|
39
|
+
doctorOptions: options.doctorOptions || {}
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=app-api.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app-api.js","sourceRoot":"","sources":["../src/app-api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,WAAW,EAAwB,MAAM,eAAe,CAAC;AACjF,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAsBhD,MAAM,UAAU,oBAAoB;IAClC,OAAO;QACL,OAAO,EAAE,iBAAiB;QAC1B,KAAK,EAAE,yBAAyB;QAChC,GAAG,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,EAAE,QAAQ,EAAE;QAC9E,OAAO,EAAE,EAAE,SAAS,EAAE,WAAW,EAAE;KACpC,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,MAAc,OAAO,CAAC,GAAG,EAAE,EAAE,WAA0B,oBAAoB,EAAE;IACpH,IAAI,CAAC;QACH,OAAO,MAAM,UAAU,CAAC,GAAG,CAAC,CAAC;IAC/B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,QAAQ,CAAC;IAClB,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,UAAkB,EAAE,UAA6B,EAAE;IACxF,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACzC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,MAAM,UAAU,CAAC,GAAG,CAAC,CAAC;IACvD,MAAM,GAAG,GAAG,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IAEtD,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;QAC1B,MAAM,CAAC,MAAM,CAAC,GAA8B,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IACvE,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IAClD,MAAM,WAAW,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAC/B,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,UAA4B,EAAE;IACnE,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACzC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,MAAM,kBAAkB,CAAC,GAAG,CAAC,CAAC;IAC/D,OAAO,gBAAgB,CAAC,QAAQ,EAAE;QAChC,GAAG;QACH,MAAM;QACN,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,aAAa,EAAE;YACb,aAAa,EAAE,OAAO,CAAC,aAAa,IAAI,EAAE;SAC3C;KACF,CAAC,CAAC;AACL,CAAC"}
|
package/dist/index.d.ts
CHANGED
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,cAAc,CAAC"}
|
package/dist/index.js
CHANGED
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,cAAc,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-loader.d.ts","sourceRoot":"","sources":["../src/plugin-loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAiB,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"plugin-loader.d.ts","sourceRoot":"","sources":["../src/plugin-loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAiB,MAAM,YAAY,CAAC;AAK1D,wBAAsB,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC,CAyBjG;AAED,wBAAsB,qBAAqB,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAa1F"}
|
package/dist/plugin-loader.js
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { existsSync } from 'node:fs';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import { pathToFileURL } from 'node:url';
|
|
2
4
|
export async function loadPlugin(pluginName, config) {
|
|
3
5
|
// Keep config in signature for future plugin selection hooks.
|
|
4
6
|
void config;
|
|
@@ -15,6 +17,10 @@ export async function loadPlugin(pluginName, config) {
|
|
|
15
17
|
if (existsSync(localPluginPath)) {
|
|
16
18
|
return instantiatePlugin(await import(localPluginPath), pluginName);
|
|
17
19
|
}
|
|
20
|
+
const workspacePluginPath = path.resolve(process.cwd(), 'packages', 'plugins', pluginName, 'dist', 'index.js');
|
|
21
|
+
if (existsSync(workspacePluginPath)) {
|
|
22
|
+
return instantiatePlugin(await import(pathToFileURL(workspacePluginPath).href), pluginName);
|
|
23
|
+
}
|
|
18
24
|
throw new Error(`Plugin "${pluginName}" not found. Expected package "${packageName}".`);
|
|
19
25
|
}
|
|
20
26
|
export async function loadPluginsFromConfig(config) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-loader.js","sourceRoot":"","sources":["../src/plugin-loader.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"plugin-loader.js","sourceRoot":"","sources":["../src/plugin-loader.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/app-api.ts
ADDED
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { createContext, runPipeline, type PipelineContext } from './pipeline.js';
|
|
2
|
+
import { loadConfig } from './config.js';
|
|
3
|
+
import { loadPlugin } from './plugin-loader.js';
|
|
4
|
+
import type { DeploidConfig } from './types.js';
|
|
5
|
+
|
|
6
|
+
export interface CommandRunOptions {
|
|
7
|
+
cwd?: string;
|
|
8
|
+
config?: DeploidConfig;
|
|
9
|
+
debug?: boolean;
|
|
10
|
+
contextExtras?: Record<string, unknown>;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export interface DoctorRunOptions extends CommandRunOptions {
|
|
14
|
+
doctorOptions?: {
|
|
15
|
+
json?: boolean;
|
|
16
|
+
markdown?: boolean;
|
|
17
|
+
ci?: boolean;
|
|
18
|
+
summary?: boolean;
|
|
19
|
+
verbose?: boolean;
|
|
20
|
+
projectOnly?: boolean;
|
|
21
|
+
fix?: boolean;
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export function createFallbackConfig(): DeploidConfig {
|
|
26
|
+
return {
|
|
27
|
+
appName: 'Deploid project',
|
|
28
|
+
appId: 'dev.deploid.placeholder',
|
|
29
|
+
web: { framework: 'static', buildCommand: 'echo "deploid"', webDir: 'public' },
|
|
30
|
+
android: { packaging: 'capacitor' }
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export async function loadConfigOptional(cwd: string = process.cwd(), fallback: DeploidConfig = createFallbackConfig()): Promise<DeploidConfig> {
|
|
35
|
+
try {
|
|
36
|
+
return await loadConfig(cwd);
|
|
37
|
+
} catch {
|
|
38
|
+
return fallback;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
export async function runPluginCommand(pluginName: string, options: CommandRunOptions = {}): Promise<PipelineContext> {
|
|
43
|
+
const cwd = options.cwd || process.cwd();
|
|
44
|
+
const config = options.config || await loadConfig(cwd);
|
|
45
|
+
const ctx = createContext(cwd, config, options.debug);
|
|
46
|
+
|
|
47
|
+
if (options.contextExtras) {
|
|
48
|
+
Object.assign(ctx as Record<string, unknown>, options.contextExtras);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
const step = await loadPlugin(pluginName, config);
|
|
52
|
+
await runPipeline(ctx, [step]);
|
|
53
|
+
return ctx;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
export async function runDoctorCommand(options: DoctorRunOptions = {}): Promise<PipelineContext> {
|
|
57
|
+
const cwd = options.cwd || process.cwd();
|
|
58
|
+
const config = options.config || await loadConfigOptional(cwd);
|
|
59
|
+
return runPluginCommand('doctor', {
|
|
60
|
+
cwd,
|
|
61
|
+
config,
|
|
62
|
+
debug: options.debug,
|
|
63
|
+
contextExtras: {
|
|
64
|
+
doctorOptions: options.doctorOptions || {}
|
|
65
|
+
}
|
|
66
|
+
});
|
|
67
|
+
}
|
package/src/index.ts
CHANGED
package/src/plugin-loader.ts
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { PipelineStep } from './pipeline.js';
|
|
2
2
|
import { DeploidConfig, DeploidPlugin } from './types.js';
|
|
3
3
|
import { existsSync } from 'node:fs';
|
|
4
|
+
import path from 'node:path';
|
|
5
|
+
import { pathToFileURL } from 'node:url';
|
|
4
6
|
|
|
5
7
|
export async function loadPlugin(pluginName: string, config: DeploidConfig): Promise<PipelineStep> {
|
|
6
8
|
// Keep config in signature for future plugin selection hooks.
|
|
@@ -21,6 +23,11 @@ export async function loadPlugin(pluginName: string, config: DeploidConfig): Pro
|
|
|
21
23
|
return instantiatePlugin(await import(localPluginPath), pluginName);
|
|
22
24
|
}
|
|
23
25
|
|
|
26
|
+
const workspacePluginPath = path.resolve(process.cwd(), 'packages', 'plugins', pluginName, 'dist', 'index.js');
|
|
27
|
+
if (existsSync(workspacePluginPath)) {
|
|
28
|
+
return instantiatePlugin(await import(pathToFileURL(workspacePluginPath).href), pluginName);
|
|
29
|
+
}
|
|
30
|
+
|
|
24
31
|
throw new Error(`Plugin "${pluginName}" not found. Expected package "${packageName}".`);
|
|
25
32
|
}
|
|
26
33
|
|
package/tsconfig.tsbuildinfo
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"root":["./src/config.ts","./src/index.ts","./src/logger.ts","./src/pipeline.ts","./src/plugin-loader.ts","./src/types.ts"],"version":"5.9.3"}
|
|
1
|
+
{"root":["./src/app-api.ts","./src/config.ts","./src/index.ts","./src/logger.ts","./src/pipeline.ts","./src/plugin-loader.ts","./src/types.ts"],"version":"5.9.3"}
|