Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feat: default config as dependency #543

Merged
merged 12 commits into from
Apr 18, 2024
Merged
Binary file removed config/defaultConfig.mapeoconfig
Binary file not shown.
7 changes: 7 additions & 0 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,7 @@
"devDependencies": {
"@bufbuild/buf": "^1.26.1",
"@hyperswarm/testnet": "^3.1.2",
"@mapeo/default-config": "4.0.0-alpha.2",
"@mapeo/mock-data": "^1.0.1",
"@sinonjs/fake-timers": "^10.0.2",
"@types/b4a": "^1.6.0",
Expand Down
3 changes: 1 addition & 2 deletions src/config-import.js
Original file line number Diff line number Diff line change
Expand Up @@ -108,14 +108,13 @@ export async function readConfig(configPath) {
*fields() {
const { fields } = presetsFile
for (const [name, field] of Object.entries(fields)) {
if (!isRecord(field) || !hasOwn(field, 'key')) {
if (!isRecord(field)) {
warnings.push(new Error(`Invalid field ${name}`))
continue
}
/** @type {Record<string, unknown>} */
const fieldValue = {
schemaName: 'field',
tagKey: field.key,
}
for (const key of Object.keys(valueSchemas.field.properties)) {
if (hasOwn(field, key)) {
Expand Down
7 changes: 3 additions & 4 deletions test-e2e/manager-basic.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import RAM from 'random-access-memory'
import { MapeoManager } from '../src/mapeo-manager.js'
import Fastify from 'fastify'
import { getExpectedConfig } from './utils.js'
import { defaultConfigPath } from '../tests/helpers/default-config.js'
import { kDataTypes } from '../src/mapeo-project.js'

const projectMigrationsFolder = new URL('../drizzle/project', import.meta.url)
Expand Down Expand Up @@ -121,12 +122,10 @@ test('Consistent loading of config', async (t) => {
dbFolder: ':memory:',
coreStorage: () => new RAM(),
fastify: Fastify(),
defaultConfigPath: 'config/defaultConfig.mapeoconfig',
defaultConfigPath,
})

const expectedDefault = await getExpectedConfig(
'config/defaultConfig.mapeoconfig'
)
const expectedDefault = await getExpectedConfig(defaultConfigPath)
const expectedMinimal = await getExpectedConfig(
'tests/fixtures/config/completeConfig.zip'
)
Expand Down
11 changes: 6 additions & 5 deletions tests/config-import.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
// @ts-check
import { test } from 'brittle'
import { size } from 'iterpal'
import { defaultConfigPath } from './helpers/default-config.js'
import { readConfig } from '../src/config-import.js'

test('config import - loading', async (t) => {
Expand Down Expand Up @@ -212,23 +213,23 @@ test('config import - presets', async (t) => {
})

test('config import - load default config', async (t) => {
let config = await readConfig('./config/defaultConfig.mapeoconfig')
const config = await readConfig(defaultConfigPath)
t.ok(config, 'valid config file')

t.is(size(config.fields()), 2, 'correct number of fields in default config')
t.is(size(config.fields()), 11, 'correct number of fields in default config')
let nIcons = 0
let nVariants = 0
/* eslint-disable-next-line */
for await (const icon of config.icons()) {
nIcons++
nVariants += size(icon.variants)
}
t.is(nIcons, 41, 'correct number of icons in default config')
t.is(nVariants, 369, 'correct number of icon variants in default config')
t.is(nIcons, 26, 'correct number of icons in default config')
t.is(nVariants, 234, 'correct number of icon variants in default config')

t.is(
size(config.presets()),
43,
28,
'correct number of presets in default config'
)

Expand Down
Binary file modified tests/fixtures/config/completeConfig.zip
Binary file not shown.
Binary file modified tests/fixtures/config/validField.zip
Binary file not shown.
5 changes: 5 additions & 0 deletions tests/helpers/default-config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
// @ts-check
import { createRequire } from 'node:module'

const require = createRequire(import.meta.url)
export const defaultConfigPath = require.resolve('@mapeo/default-config')
Loading