Merge pull request 'chore(release): prepare 0.2.0' (#82) from chore/release-0.2.0 into main
CI / verify (push) Successful in 1m6s
CI / infrastructure-smoke (push) Successful in 36s
CI / migration-smoke (push) Successful in 1m55s
CI / package-release (push) Successful in 35s
CI / image-build (push) Successful in 11s
CI / deploy-smoke (same-origin) (push) Successful in 49s
CI / deploy-smoke (split) (push) Successful in 1m22s
CI / package-publication (push) Successful in 41s
CI / verify (push) Successful in 1m6s
CI / infrastructure-smoke (push) Successful in 36s
CI / migration-smoke (push) Successful in 1m55s
CI / package-release (push) Successful in 35s
CI / image-build (push) Successful in 11s
CI / deploy-smoke (same-origin) (push) Successful in 49s
CI / deploy-smoke (split) (push) Successful in 1m22s
CI / package-publication (push) Successful in 41s
Reviewed-on: https://git.riverofglorymn.org/River_of_Glory_Church/Ekklesia/pulls/82 Reviewed-by: The_River <[email protected]>
This commit was merged in pull request #82.
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@ekklesia/api",
|
"name": "@ekklesia/api",
|
||||||
"version": "0.1.2",
|
"version": "0.2.0",
|
||||||
"license": "AGPL-3.0-or-later",
|
"license": "AGPL-3.0-or-later",
|
||||||
"private": true,
|
"private": true,
|
||||||
"type": "module",
|
"type": "module",
|
||||||
|
|||||||
@@ -221,9 +221,9 @@ async function applyCoreMigrations(url: string): Promise<void> {
|
|||||||
const aggregate = await discoverAllMigrations({
|
const aggregate = await discoverAllMigrations({
|
||||||
coreMigrationsDirectory,
|
coreMigrationsDirectory,
|
||||||
moduleDiscovery: {
|
moduleDiscovery: {
|
||||||
moduleSdkVersion: "0.1.0",
|
moduleSdkVersion: "0.2.0",
|
||||||
modulesDirectory: emptyModulesDirectory,
|
modulesDirectory: emptyModulesDirectory,
|
||||||
platformVersion: "0.1.0",
|
platformVersion: "0.2.0",
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
// Phase 4A's and Phase 4C pass 1's committed migrations must not have drifted while building
|
// Phase 4A's and Phase 4C pass 1's committed migrations must not have drifted while building
|
||||||
@@ -339,7 +339,7 @@ async function createGatedRouteModule(
|
|||||||
writeFile(
|
writeFile(
|
||||||
path.join(moduleDirectory, "ekklesia.module.json"),
|
path.join(moduleDirectory, "ekklesia.module.json"),
|
||||||
JSON.stringify({
|
JSON.stringify({
|
||||||
compatibility: { moduleSdk: "^0.1.0", platform: "^0.1.0" },
|
compatibility: { moduleSdk: "^0.2.0", platform: "^0.2.0" },
|
||||||
entrypoints: { server: "./dist/server/index.js" },
|
entrypoints: { server: "./dist/server/index.js" },
|
||||||
id,
|
id,
|
||||||
manifestVersion: 8,
|
manifestVersion: 8,
|
||||||
@@ -390,7 +390,7 @@ async function createFixtureModule(
|
|||||||
id,
|
id,
|
||||||
name: `${id} module`,
|
name: `${id} module`,
|
||||||
version: "0.1.0",
|
version: "0.1.0",
|
||||||
compatibility: { platform: "^0.1.0", moduleSdk: "^0.1.0" },
|
compatibility: { platform: "^0.2.0", moduleSdk: "^0.2.0" },
|
||||||
permissions: [],
|
permissions: [],
|
||||||
entrypoints: { server: "./dist/server/index.js" },
|
entrypoints: { server: "./dist/server/index.js" },
|
||||||
...manifestOverrides,
|
...manifestOverrides,
|
||||||
@@ -521,7 +521,7 @@ async function createUiModule(
|
|||||||
writeFile(
|
writeFile(
|
||||||
path.join(moduleDirectory, "ekklesia.module.json"),
|
path.join(moduleDirectory, "ekklesia.module.json"),
|
||||||
JSON.stringify({
|
JSON.stringify({
|
||||||
compatibility: { moduleSdk: "^0.1.0", platform: "^0.1.0" },
|
compatibility: { moduleSdk: "^0.2.0", platform: "^0.2.0" },
|
||||||
entrypoints: { server: "./dist/server/index.js", ui: "./dist/ui/index.js" },
|
entrypoints: { server: "./dist/server/index.js", ui: "./dist/ui/index.js" },
|
||||||
id,
|
id,
|
||||||
manifestVersion: 8,
|
manifestVersion: 8,
|
||||||
@@ -2592,9 +2592,9 @@ describe.sequential("live API — installed module permission end-to-end", () =>
|
|||||||
const report = await diagnoseEkklesia({
|
const report = await diagnoseEkklesia({
|
||||||
coreMigrationsDirectory,
|
coreMigrationsDirectory,
|
||||||
moduleDiscovery: {
|
moduleDiscovery: {
|
||||||
moduleSdkVersion: "0.1.0",
|
moduleSdkVersion: "0.2.0",
|
||||||
modulesDirectory,
|
modulesDirectory,
|
||||||
platformVersion: "0.1.0",
|
platformVersion: "0.2.0",
|
||||||
},
|
},
|
||||||
runtimeRange: ">=0.0.0",
|
runtimeRange: ">=0.0.0",
|
||||||
runtimeVersion: process.versions.node,
|
runtimeVersion: process.versions.node,
|
||||||
@@ -3906,9 +3906,9 @@ describe.sequential("live API — module lifecycle governs what actually runs",
|
|||||||
const aggregate = await discoverAllMigrations({
|
const aggregate = await discoverAllMigrations({
|
||||||
coreMigrationsDirectory,
|
coreMigrationsDirectory,
|
||||||
moduleDiscovery: {
|
moduleDiscovery: {
|
||||||
moduleSdkVersion: "0.1.0",
|
moduleSdkVersion: "0.2.0",
|
||||||
modulesDirectory,
|
modulesDirectory,
|
||||||
platformVersion: "0.1.0",
|
platformVersion: "0.2.0",
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
expect(aggregate.discoveredModules.map((module) => module.manifest.id)).toEqual(["calendar"]);
|
expect(aggregate.discoveredModules.map((module) => module.manifest.id)).toEqual(["calendar"]);
|
||||||
|
|||||||
@@ -118,7 +118,7 @@ async function createDisplayModuleDirectory(): Promise<string> {
|
|||||||
writeFile(
|
writeFile(
|
||||||
path.join(moduleDirectory, "ekklesia.module.json"),
|
path.join(moduleDirectory, "ekklesia.module.json"),
|
||||||
JSON.stringify({
|
JSON.stringify({
|
||||||
compatibility: { moduleSdk: "^0.1.0", platform: "^0.1.0" },
|
compatibility: { moduleSdk: "^0.2.0", platform: "^0.2.0" },
|
||||||
entrypoints: {
|
entrypoints: {
|
||||||
display: { artifact: "./dist/ui/display.js", permission: displayPermission },
|
display: { artifact: "./dist/ui/display.js", permission: displayPermission },
|
||||||
server: "./dist/server/index.js",
|
server: "./dist/server/index.js",
|
||||||
|
|||||||
@@ -108,7 +108,7 @@ async function createFixtureModule(
|
|||||||
id,
|
id,
|
||||||
name: `${id} module`,
|
name: `${id} module`,
|
||||||
version: "0.1.0",
|
version: "0.1.0",
|
||||||
compatibility: { platform: "^0.1.0", moduleSdk: "^0.1.0" },
|
compatibility: { platform: "^0.2.0", moduleSdk: "^0.2.0" },
|
||||||
permissions: [],
|
permissions: [],
|
||||||
entrypoints: { server: "./dist/server/index.js" },
|
entrypoints: { server: "./dist/server/index.js" },
|
||||||
...manifestOverrides,
|
...manifestOverrides,
|
||||||
@@ -267,7 +267,7 @@ function fakeDiscoveredModule(
|
|||||||
): DiscoveredModule {
|
): DiscoveredModule {
|
||||||
const manifest = parseModuleManifest({
|
const manifest = parseModuleManifest({
|
||||||
capabilities: [],
|
capabilities: [],
|
||||||
compatibility: { moduleSdk: "^0.1.0", platform: "^0.1.0" },
|
compatibility: { moduleSdk: "^0.2.0", platform: "^0.2.0" },
|
||||||
entrypoints: { server: "./dist/does-not-exist/index.js" },
|
entrypoints: { server: "./dist/does-not-exist/index.js" },
|
||||||
id,
|
id,
|
||||||
manifestVersion: 8,
|
manifestVersion: 8,
|
||||||
@@ -1435,9 +1435,9 @@ describe("Ekklesia API module runtime startup and shutdown", () => {
|
|||||||
const recorder = createEventRecorder();
|
const recorder = createEventRecorder();
|
||||||
await createWorkingFixtureModule(modulesDirectory, "calendar", recorder, { withRoute: true });
|
await createWorkingFixtureModule(modulesDirectory, "calendar", recorder, { withRoute: true });
|
||||||
const discovered = await (await import("@ekklesia/core/modules")).discoverModules({
|
const discovered = await (await import("@ekklesia/core/modules")).discoverModules({
|
||||||
moduleSdkVersion: "0.1.0",
|
moduleSdkVersion: "0.2.0",
|
||||||
modulesDirectory,
|
modulesDirectory,
|
||||||
platformVersion: "0.1.0",
|
platformVersion: "0.2.0",
|
||||||
});
|
});
|
||||||
mockPoolAndAuth();
|
mockPoolAndAuth();
|
||||||
mockSuccessfulServe();
|
mockSuccessfulServe();
|
||||||
|
|||||||
@@ -212,9 +212,9 @@ async function applyCoreMigrations(url: string): Promise<void> {
|
|||||||
const aggregate = await discoverAllMigrations({
|
const aggregate = await discoverAllMigrations({
|
||||||
coreMigrationsDirectory,
|
coreMigrationsDirectory,
|
||||||
moduleDiscovery: {
|
moduleDiscovery: {
|
||||||
moduleSdkVersion: "0.1.0",
|
moduleSdkVersion: "0.2.0",
|
||||||
modulesDirectory: emptyModulesDirectory,
|
modulesDirectory: emptyModulesDirectory,
|
||||||
platformVersion: "0.1.0",
|
platformVersion: "0.2.0",
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
expect(aggregate.migrations.map((entry) => entry.identity)).toEqual([
|
expect(aggregate.migrations.map((entry) => entry.identity)).toEqual([
|
||||||
@@ -241,9 +241,9 @@ async function applyMigrationsWithModule(url: string): Promise<void> {
|
|||||||
const aggregate = await discoverAllMigrations({
|
const aggregate = await discoverAllMigrations({
|
||||||
coreMigrationsDirectory,
|
coreMigrationsDirectory,
|
||||||
moduleDiscovery: {
|
moduleDiscovery: {
|
||||||
moduleSdkVersion: "0.1.0",
|
moduleSdkVersion: "0.2.0",
|
||||||
modulesDirectory: fixtureModulesDirectory,
|
modulesDirectory: fixtureModulesDirectory,
|
||||||
platformVersion: "0.1.0",
|
platformVersion: "0.2.0",
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
// Core migrations aggregate first, exactly once each, and always before any module migration.
|
// Core migrations aggregate first, exactly once each, and always before any module migration.
|
||||||
|
|||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@ekklesia/core",
|
"name": "@ekklesia/core",
|
||||||
"version": "0.1.2",
|
"version": "0.2.0",
|
||||||
"license": "AGPL-3.0-or-later",
|
"license": "AGPL-3.0-or-later",
|
||||||
"private": true,
|
"private": true,
|
||||||
"type": "module",
|
"type": "module",
|
||||||
|
|||||||
+2
-2
@@ -5,8 +5,8 @@
|
|||||||
"description": "Test-only installed module fixture proving ModuleDatabase against real PostgreSQL. Never discovered by production startup, Doctor, or normal migration aggregation — only apps/api/tests/module-database.integration.ts points discovery at it explicitly.",
|
"description": "Test-only installed module fixture proving ModuleDatabase against real PostgreSQL. Never discovered by production startup, Doctor, or normal migration aggregation — only apps/api/tests/module-database.integration.ts points discovery at it explicitly.",
|
||||||
"version": "0.1.0",
|
"version": "0.1.0",
|
||||||
"compatibility": {
|
"compatibility": {
|
||||||
"platform": "^0.1.0",
|
"platform": "^0.2.0",
|
||||||
"moduleSdk": "^0.1.0"
|
"moduleSdk": "^0.2.0"
|
||||||
},
|
},
|
||||||
"permissions": [
|
"permissions": [
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -35,9 +35,9 @@ async function createModulesDirectory(): Promise<string> {
|
|||||||
|
|
||||||
function discoveryOptions(modulesDirectory: string) {
|
function discoveryOptions(modulesDirectory: string) {
|
||||||
return {
|
return {
|
||||||
moduleSdkVersion: "0.1.0",
|
moduleSdkVersion: "0.2.0",
|
||||||
modulesDirectory,
|
modulesDirectory,
|
||||||
platformVersion: "0.1.0",
|
platformVersion: "0.2.0",
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -18,8 +18,8 @@ import {
|
|||||||
|
|
||||||
const platform = {
|
const platform = {
|
||||||
databaseRuntime: { "drizzle-orm": "0.45.2" },
|
databaseRuntime: { "drizzle-orm": "0.45.2" },
|
||||||
moduleSdkVersion: "0.1.2",
|
moduleSdkVersion: "0.2.0",
|
||||||
platformVersion: "0.1.2",
|
platformVersion: "0.2.0",
|
||||||
} as const;
|
} as const;
|
||||||
|
|
||||||
const temporaryDirectories: string[] = [];
|
const temporaryDirectories: string[] = [];
|
||||||
|
|||||||
@@ -1905,7 +1905,7 @@ describe.sequential("live PostgreSQL migration timeout precedence", () => {
|
|||||||
describe.sequential("live PostgreSQL retained history for an uninstalled module", () => {
|
describe.sequential("live PostgreSQL retained history for an uninstalled module", () => {
|
||||||
const repositoryRoot = path.resolve(path.dirname(fileURLToPath(import.meta.url)), "..", "..");
|
const repositoryRoot = path.resolve(path.dirname(fileURLToPath(import.meta.url)), "..", "..");
|
||||||
const templateModule = path.join(repositoryRoot, "templates", "module");
|
const templateModule = path.join(repositoryRoot, "templates", "module");
|
||||||
const versions = { moduleSdkVersion: "0.1.0", platformVersion: "0.1.0" } as const;
|
const versions = { moduleSdkVersion: "0.2.0", platformVersion: "0.2.0" } as const;
|
||||||
|
|
||||||
async function coreWithoutNewestMigration(directory: string): Promise<string> {
|
async function coreWithoutNewestMigration(directory: string): Promise<string> {
|
||||||
const target = path.join(directory, "core-drizzle");
|
const target = path.join(directory, "core-drizzle");
|
||||||
|
|||||||
@@ -54,7 +54,7 @@ export function manifestFor(
|
|||||||
id,
|
id,
|
||||||
name: `${id} module`,
|
name: `${id} module`,
|
||||||
version: "0.1.0",
|
version: "0.1.0",
|
||||||
compatibility: { platform: "^0.1.0", moduleSdk: "^0.1.0" },
|
compatibility: { platform: "^0.2.0", moduleSdk: "^0.2.0" },
|
||||||
...(options.dependencies ? { dependencies: options.dependencies } : {}),
|
...(options.dependencies ? { dependencies: options.dependencies } : {}),
|
||||||
capabilities: [],
|
capabilities: [],
|
||||||
permissions: [],
|
permissions: [],
|
||||||
|
|||||||
@@ -180,9 +180,9 @@ export async function modulePackageFixture(
|
|||||||
runtime: { node: ">=20" },
|
runtime: { node: ">=20" },
|
||||||
provenance: {
|
provenance: {
|
||||||
revision: "86ae907f59458508e3277666cdd214f5bd7c1078",
|
revision: "86ae907f59458508e3277666cdd214f5bd7c1078",
|
||||||
packager: { name: "@ekklesia/module-pack", version: "0.1.2" },
|
packager: { name: "@ekklesia/module-pack", version: "0.2.0" },
|
||||||
},
|
},
|
||||||
incorporates: { "@ekklesia/module-sdk": "0.1.2" },
|
incorporates: { "@ekklesia/module-sdk": "0.2.0" },
|
||||||
files: listed,
|
files: listed,
|
||||||
};
|
};
|
||||||
const metadata = options.metadata ? options.metadata(baseMetadata) : baseMetadata;
|
const metadata = options.metadata ? options.metadata(baseMetadata) : baseMetadata;
|
||||||
|
|||||||
+2
-2
@@ -500,10 +500,10 @@ finds its files:
|
|||||||
```sh
|
```sh
|
||||||
docker build \
|
docker build \
|
||||||
--file deploy/Dockerfile \
|
--file deploy/Dockerfile \
|
||||||
--build-arg VERSION=0.1.2 \
|
--build-arg VERSION=0.2.0 \
|
||||||
--build-arg REVISION="$(git rev-parse HEAD)" \
|
--build-arg REVISION="$(git rev-parse HEAD)" \
|
||||||
--build-arg SOURCE=https://git.example.org/your-org/ekklesia \
|
--build-arg SOURCE=https://git.example.org/your-org/ekklesia \
|
||||||
--tag ekklesia:0.1.2 \
|
--tag ekklesia:0.2.0 \
|
||||||
.
|
.
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|||||||
@@ -25,8 +25,16 @@ version set ─▶ build ─▶ test ─▶ pack the public package train ─▶
|
|||||||
1. **Version set.** A `chore(release): prepare X` pull request sets the release version: the root
|
1. **Version set.** A `chore(release): prepare X` pull request sets the release version: the root
|
||||||
`package.json`, every platform workspace package (the module template versions as a module, not
|
`package.json`, every platform workspace package (the module template versions as a module, not
|
||||||
with the platform), the image build example in `deploy/README.md`, and the standalone fixture's
|
with the platform), the image build example in `deploy/README.md`, and the standalone fixture's
|
||||||
exact `@ekklesia/module-pack` pin (`tests/fixtures/standalone-module/package.json`). The tag
|
exact `@ekklesia/module-pack` pin and `@ekklesia/*` ranges
|
||||||
must point at a commit that carries the version it names.
|
(`tests/fixtures/standalone-module/package.json`). The tag must point at a commit that carries
|
||||||
|
the version it names.
|
||||||
|
|
||||||
|
A minor version (0.x → 0.(x+1)) is a breaking release before 1.0, so manifests that declare
|
||||||
|
`compatibility.platform` and `compatibility.moduleSdk` as `^0.x.0` no longer match it. In the
|
||||||
|
same pull request, move to the new range every module built for this release (the template, the
|
||||||
|
standalone fixture, the native proof module), the test fixtures that model a module of the
|
||||||
|
current release or the current platform, and the module-development guide's examples. A patch
|
||||||
|
version changes none of these.
|
||||||
2. **Build and test.** `pnpm verify`, the integration suite, and the deploy smoke, as for any change.
|
2. **Build and test.** `pnpm verify`, the integration suite, and the deploy smoke, as for any change.
|
||||||
3. **Pack the public package train.** `pnpm packages:release` (below).
|
3. **Pack the public package train.** `pnpm packages:release` (below).
|
||||||
4. **Standalone consumer proof.** A module outside the repository consumes exactly those
|
4. **Standalone consumer proof.** A module outside the repository consumes exactly those
|
||||||
@@ -111,17 +119,17 @@ registry and is not a registry catalog.
|
|||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
"packageTrain": 1,
|
"packageTrain": 1,
|
||||||
"version": "0.1.2",
|
"version": "0.2.0",
|
||||||
"source": { "modified": false, "revision": "<full commit id>" },
|
"source": { "modified": false, "revision": "<full commit id>" },
|
||||||
"packages": [
|
"packages": [
|
||||||
{
|
{
|
||||||
"file": "ekklesia-contracts-0.1.2.tgz",
|
"file": "ekklesia-contracts-0.2.0.tgz",
|
||||||
"integrity": "sha512-<base64>",
|
"integrity": "sha512-<base64>",
|
||||||
"name": "@ekklesia/contracts",
|
"name": "@ekklesia/contracts",
|
||||||
"role": "implementation",
|
"role": "implementation",
|
||||||
"sha256": "<hex>",
|
"sha256": "<hex>",
|
||||||
"size": 87379,
|
"size": 87379,
|
||||||
"version": "0.1.2"
|
"version": "0.2.0"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -343,7 +351,7 @@ public owners, a publisher team, and an outsider. In CI it publishes the very ar
|
|||||||
|
|
||||||
### The first publication
|
### The first publication
|
||||||
|
|
||||||
The first train published is the **next** platform release version, not 0.1.2. The `v0.1.2` tag
|
The first train published is **0.2.0**, the next platform release, not 0.1.2. The `v0.1.2` tag
|
||||||
predates the curated SDK and this release tooling, so packages built now and called 0.1.2 would
|
predates the curated SDK and this release tooling, so packages built now and called 0.1.2 would
|
||||||
claim to be source that 0.1.2 never contained.
|
claim to be source that 0.1.2 never contained.
|
||||||
|
|
||||||
|
|||||||
@@ -76,7 +76,7 @@ entrypoints. A module in its own repository depends on the published packages in
|
|||||||
> **Status:** the packages are published by release
|
> **Status:** the packages are published by release
|
||||||
> ([ADR 0053](../architecture/decisions/0053-standalone-module-development-packages.md),
|
> ([ADR 0053](../architecture/decisions/0053-standalone-module-development-packages.md),
|
||||||
> [Releases and the public package train](../development/releases.md)). The first published train
|
> [Releases and the public package train](../development/releases.md)). The first published train
|
||||||
> is the next platform release after 0.1.2.
|
> is 0.2.0, the platform release after 0.1.2.
|
||||||
|
|
||||||
A module does not need an Ekklesia checkout. Do not clone Ekklesia and put your module in its
|
A module does not need an Ekklesia checkout. Do not clone Ekklesia and put your module in its
|
||||||
`modules/` directory: your module is its own repository, and it depends on Ekklesia's
|
`modules/` directory: your module is its own repository, and it depends on Ekklesia's
|
||||||
@@ -131,17 +131,17 @@ import it yourself, because what it exports is the platform's, not a supported a
|
|||||||
"build": "tsc --project tsconfig.build.json && ekklesia-build-module-ui"
|
"build": "tsc --project tsconfig.build.json && ekklesia-build-module-ui"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@ekklesia/module-database": "^0.1.2",
|
"@ekklesia/module-database": "^0.2.0",
|
||||||
"@ekklesia/module-sdk": "^0.1.2",
|
"@ekklesia/module-sdk": "^0.2.0",
|
||||||
"@ekklesia/module-ui-sdk": "^0.1.2",
|
"@ekklesia/module-ui-sdk": "^0.2.0",
|
||||||
"@ekklesia/ui": "^0.1.2",
|
"@ekklesia/ui": "^0.2.0",
|
||||||
"react": "19.2.8",
|
"react": "19.2.8",
|
||||||
"react-dom": "19.2.8"
|
"react-dom": "19.2.8"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@ekklesia/module-pack": "0.1.2",
|
"@ekklesia/module-pack": "0.2.0",
|
||||||
"@ekklesia/module-ui-build": "^0.1.2",
|
"@ekklesia/module-ui-build": "^0.2.0",
|
||||||
"@ekklesia/typescript-config": "^0.1.2",
|
"@ekklesia/typescript-config": "^0.2.0",
|
||||||
"typescript": "7.0.2"
|
"typescript": "7.0.2"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -366,8 +366,8 @@ without executing module code:
|
|||||||
"name": "Calendar",
|
"name": "Calendar",
|
||||||
"version": "0.1.0",
|
"version": "0.1.0",
|
||||||
"compatibility": {
|
"compatibility": {
|
||||||
"platform": "^0.1.0",
|
"platform": "^0.2.0",
|
||||||
"moduleSdk": "^0.1.0"
|
"moduleSdk": "^0.2.0"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"modules": {
|
"modules": {
|
||||||
|
|||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "ekklesia",
|
"name": "ekklesia",
|
||||||
"version": "0.1.2",
|
"version": "0.2.0",
|
||||||
"license": "AGPL-3.0-or-later",
|
"license": "AGPL-3.0-or-later",
|
||||||
"private": true,
|
"private": true,
|
||||||
"type": "module",
|
"type": "module",
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@ekklesia/contracts",
|
"name": "@ekklesia/contracts",
|
||||||
"version": "0.1.2",
|
"version": "0.2.0",
|
||||||
"license": "AGPL-3.0-or-later",
|
"license": "AGPL-3.0-or-later",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"files": [
|
"files": [
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@ekklesia/design-tokens",
|
"name": "@ekklesia/design-tokens",
|
||||||
"version": "0.1.2",
|
"version": "0.2.0",
|
||||||
"license": "AGPL-3.0-or-later",
|
"license": "AGPL-3.0-or-later",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"files": [
|
"files": [
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@ekklesia/module-database",
|
"name": "@ekklesia/module-database",
|
||||||
"version": "0.1.2",
|
"version": "0.2.0",
|
||||||
"license": "AGPL-3.0-or-later",
|
"license": "AGPL-3.0-or-later",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"files": [
|
"files": [
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@ekklesia/module-pack",
|
"name": "@ekklesia/module-pack",
|
||||||
"version": "0.1.2",
|
"version": "0.2.0",
|
||||||
"license": "AGPL-3.0-or-later",
|
"license": "AGPL-3.0-or-later",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"files": [
|
"files": [
|
||||||
|
|||||||
@@ -5,8 +5,8 @@
|
|||||||
"description": "A minimal native module: its backend uses sharp, so it packages for linux-x64-glibc.",
|
"description": "A minimal native module: its backend uses sharp, so it packages for linux-x64-glibc.",
|
||||||
"version": "0.1.0",
|
"version": "0.1.0",
|
||||||
"compatibility": {
|
"compatibility": {
|
||||||
"platform": "^0.1.0",
|
"platform": "^0.2.0",
|
||||||
"moduleSdk": "^0.1.0"
|
"moduleSdk": "^0.2.0"
|
||||||
},
|
},
|
||||||
"database": {
|
"database": {
|
||||||
"abi": 1
|
"abi": 1
|
||||||
|
|||||||
@@ -183,8 +183,8 @@ describe.runIf(onTargetHost)("the linux-x64-glibc target, proven with sharp", ()
|
|||||||
extractTo,
|
extractTo,
|
||||||
platform: {
|
platform: {
|
||||||
databaseRuntime: { "drizzle-orm": "0.45.2" },
|
databaseRuntime: { "drizzle-orm": "0.45.2" },
|
||||||
moduleSdkVersion: "0.1.2",
|
moduleSdkVersion: "0.2.0",
|
||||||
platformVersion: "0.1.2",
|
platformVersion: "0.2.0",
|
||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
).resolves.toMatchObject({ moduleId: "native-proof", target: "linux-x64-glibc" });
|
).resolves.toMatchObject({ moduleId: "native-proof", target: "linux-x64-glibc" });
|
||||||
|
|||||||
@@ -109,7 +109,7 @@ export async function fixtureModule(options: FixtureModuleOptions = {}): Promise
|
|||||||
id,
|
id,
|
||||||
name: `${id} module`,
|
name: `${id} module`,
|
||||||
version,
|
version,
|
||||||
compatibility: { platform: "^0.1.0", moduleSdk: "^0.1.0" },
|
compatibility: { platform: "^0.2.0", moduleSdk: "^0.2.0" },
|
||||||
...(options.databaseAbi === 1 ? { database: { abi: 1 } } : {}),
|
...(options.databaseAbi === 1 ? { database: { abi: 1 } } : {}),
|
||||||
capabilities: [],
|
capabilities: [],
|
||||||
permissions: [],
|
permissions: [],
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@ekklesia/module-sdk",
|
"name": "@ekklesia/module-sdk",
|
||||||
"version": "0.1.2",
|
"version": "0.2.0",
|
||||||
"license": "AGPL-3.0-or-later",
|
"license": "AGPL-3.0-or-later",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"files": [
|
"files": [
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@ekklesia/module-ui-build",
|
"name": "@ekklesia/module-ui-build",
|
||||||
"version": "0.1.2",
|
"version": "0.2.0",
|
||||||
"license": "AGPL-3.0-or-later",
|
"license": "AGPL-3.0-or-later",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"files": [
|
"files": [
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@ekklesia/module-ui-host",
|
"name": "@ekklesia/module-ui-host",
|
||||||
"version": "0.1.2",
|
"version": "0.2.0",
|
||||||
"private": true,
|
"private": true,
|
||||||
"license": "AGPL-3.0-or-later",
|
"license": "AGPL-3.0-or-later",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@ekklesia/module-ui-sdk",
|
"name": "@ekklesia/module-ui-sdk",
|
||||||
"version": "0.1.2",
|
"version": "0.2.0",
|
||||||
"license": "AGPL-3.0-or-later",
|
"license": "AGPL-3.0-or-later",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"files": [
|
"files": [
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@ekklesia/typescript-config",
|
"name": "@ekklesia/typescript-config",
|
||||||
"version": "0.1.2",
|
"version": "0.2.0",
|
||||||
"license": "AGPL-3.0-or-later",
|
"license": "AGPL-3.0-or-later",
|
||||||
"files": [
|
"files": [
|
||||||
"base.json",
|
"base.json",
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@ekklesia/ui",
|
"name": "@ekklesia/ui",
|
||||||
"version": "0.1.2",
|
"version": "0.2.0",
|
||||||
"license": "AGPL-3.0-or-later",
|
"license": "AGPL-3.0-or-later",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"files": [
|
"files": [
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@ekklesia/shell",
|
"name": "@ekklesia/shell",
|
||||||
"version": "0.1.2",
|
"version": "0.2.0",
|
||||||
"license": "AGPL-3.0-or-later",
|
"license": "AGPL-3.0-or-later",
|
||||||
"private": true,
|
"private": true,
|
||||||
"type": "module",
|
"type": "module",
|
||||||
|
|||||||
@@ -5,8 +5,8 @@
|
|||||||
"description": "A minimal Ekklesia module template with backend behavior and optional primary and display UI.",
|
"description": "A minimal Ekklesia module template with backend behavior and optional primary and display UI.",
|
||||||
"version": "0.1.0",
|
"version": "0.1.0",
|
||||||
"compatibility": {
|
"compatibility": {
|
||||||
"platform": "^0.1.0",
|
"platform": "^0.2.0",
|
||||||
"moduleSdk": "^0.1.0"
|
"moduleSdk": "^0.2.0"
|
||||||
},
|
},
|
||||||
"database": {
|
"database": {
|
||||||
"abi": 1
|
"abi": 1
|
||||||
|
|||||||
+2
-2
@@ -5,8 +5,8 @@
|
|||||||
"description": "Proves a module builds, packages, and verifies from published Ekklesia packages alone.",
|
"description": "Proves a module builds, packages, and verifies from published Ekklesia packages alone.",
|
||||||
"version": "0.1.0",
|
"version": "0.1.0",
|
||||||
"compatibility": {
|
"compatibility": {
|
||||||
"platform": "^0.1.0",
|
"platform": "^0.2.0",
|
||||||
"moduleSdk": "^0.1.0"
|
"moduleSdk": "^0.2.0"
|
||||||
},
|
},
|
||||||
"database": {
|
"database": {
|
||||||
"abi": 1
|
"abi": 1
|
||||||
|
|||||||
+8
-8
@@ -13,18 +13,18 @@
|
|||||||
"typecheck": "tsc --noEmit --project tsconfig.json && tsc --noEmit --project tsconfig.ui.json"
|
"typecheck": "tsc --noEmit --project tsconfig.json && tsc --noEmit --project tsconfig.ui.json"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@ekklesia/design-tokens": "^0.1.2",
|
"@ekklesia/design-tokens": "^0.2.0",
|
||||||
"@ekklesia/module-database": "^0.1.2",
|
"@ekklesia/module-database": "^0.2.0",
|
||||||
"@ekklesia/module-sdk": "^0.1.2",
|
"@ekklesia/module-sdk": "^0.2.0",
|
||||||
"@ekklesia/module-ui-sdk": "^0.1.2",
|
"@ekklesia/module-ui-sdk": "^0.2.0",
|
||||||
"@ekklesia/ui": "^0.1.2",
|
"@ekklesia/ui": "^0.2.0",
|
||||||
"react": "19.2.8",
|
"react": "19.2.8",
|
||||||
"react-dom": "19.2.8"
|
"react-dom": "19.2.8"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@ekklesia/module-pack": "0.1.2",
|
"@ekklesia/module-pack": "0.2.0",
|
||||||
"@ekklesia/module-ui-build": "^0.1.2",
|
"@ekklesia/module-ui-build": "^0.2.0",
|
||||||
"@ekklesia/typescript-config": "^0.1.2",
|
"@ekklesia/typescript-config": "^0.2.0",
|
||||||
"@types/node": "24.13.3",
|
"@types/node": "24.13.3",
|
||||||
"@types/react": "19.2.18",
|
"@types/react": "19.2.18",
|
||||||
"@types/react-dom": "19.2.4",
|
"@types/react-dom": "19.2.4",
|
||||||
|
|||||||
Reference in New Issue
Block a user