Skip to content

Commit

Permalink
Remove cycles
Browse files Browse the repository at this point in the history
  • Loading branch information
benmerckx committed Feb 9, 2024
1 parent 7e3f67a commit 7bebfeb
Show file tree
Hide file tree
Showing 159 changed files with 1,907 additions and 975 deletions.
6 changes: 6 additions & 0 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,12 @@ jobs:
- uses: actions/setup-node@v3
with: {node-version: '18', cache: 'yarn'}
- run: yarn
- name: Check cycles for server target
continue-on-error: true
run: yarn cycles:server
- name: Check cycles for browser target
continue-on-error: true
run: yarn cycles:browser
- run: yarn test
- uses: nowsprinting/check-version-format-action@v3
id: version
Expand Down
2 changes: 1 addition & 1 deletion apps/demo/src/demo/PagePreview.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import {Recipe} from '@/demo/Recipe'
import {Entry} from 'alinea/core'
import {Entry} from 'alinea/core/Entry'

interface PagePreviewProps {
entry: Entry
Expand Down
1 change: 1 addition & 0 deletions apps/dev/content/primary/fields/fields.json
Original file line number Diff line number Diff line change
Expand Up @@ -192,6 +192,7 @@
"withInitial": [
{
"type": "paragraph",
"textAlign": "left",
"content": [
{
"type": "text",
Expand Down
15 changes: 15 additions & 0 deletions build.js
Original file line number Diff line number Diff line change
Expand Up @@ -128,6 +128,21 @@ const internalPlugin = {
const cwd = process.cwd()
const src = path.join(cwd, 'src')
build.onResolve({filter: /^alinea\/.*/}, args => {
const checkCycles = process.env.CHECK_CYCLES
if (checkCycles) {
// Make this a relative path
const file = args.path.slice('alinea/'.length)
if (args.kind === 'entry-point') return
const localFile = path.join(src, file)
const target =
checkCycles === 'browser' ? BROWSER_TARGET : SERVER_TARGET
const targetFile = `${localFile}.${target}`
const hasTargetFile = fs.existsSync(`${targetFile}.tsx`)
const relative = hasTargetFile
? `./${path.relative(args.resolveDir, targetFile)}.js`
: `./${path.relative(args.resolveDir, localFile)}.js`
return {path: relative, external: true}
}
return {path: args.path, external: true}
/*return build.resolve('./' + path.join('src', file), {
kind: args.kind,
Expand Down
11 changes: 7 additions & 4 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@
"stories": "ladle serve",
"demo": "node build.js --watch -- node dev.js --dir apps/demo --config src/cms -- yarn workspace @alinea/demo dev",
"build": "tsc && node build.js",
"cycles:server": "CHECK_CYCLES=server node build.js && madge --circular dist/index.js",
"cycles:browser": "CHECK_CYCLES=browser node build.js && madge --circular dist/index.js",
"alinea": "node build.js && node dist/cli.js",
"build:alinea": "node build.js",
"release:types": "tsc",
Expand Down Expand Up @@ -75,6 +77,7 @@
"alinea": "link:.",
"esbx": "^0.0.18",
"glob": "^7.2.0",
"madge": "^6.1.0",
"npm-run-all": "^4.1.5",
"postcss-modules": "^6.0.0",
"postcss-pxtorem": "^6.0.0",
Expand Down Expand Up @@ -114,10 +117,10 @@
"browser": "./dist/core/media/MediaRoot.browser.js",
"default": "./dist/core/media/MediaRoot.js"
},
"./core/media/MediaSchema": {
"worker": "./dist/core/media/MediaSchema.js",
"browser": "./dist/core/media/MediaSchema.browser.js",
"default": "./dist/core/media/MediaSchema.js"
"./core/media/MediaTypes": {
"worker": "./dist/core/media/MediaTypes.js",
"browser": "./dist/core/media/MediaTypes.browser.js",
"default": "./dist/core/media/MediaTypes.js"
},
"./dashboard/view/Preview": {
"worker": "./dist/dashboard/view/Preview.js",
Expand Down
31 changes: 17 additions & 14 deletions src/alinea.ts
Original file line number Diff line number Diff line change
@@ -1,20 +1,23 @@
// Config creation
export {
createConfig as config,
Meta as meta,
page,
root,
schema,
snippet,
track,
type,
workspace
} from 'alinea/core'
export {createConfig as config} from 'alinea/core/Config'
export {Meta as meta} from 'alinea/core/Meta'
export {page} from 'alinea/core/Page'
export {root} from 'alinea/core/Root'
export {schema} from 'alinea/core/Schema'
export {track} from 'alinea/core/Tracker'
export {type} from 'alinea/core/Type'
export {workspace} from 'alinea/core/Workspace'
export {snippet} from 'alinea/core/pages/Snippet'

// Types

export {Root, Workspace} from 'alinea/core'
export type {Config, Infer, Schema, TextDoc, Type} from 'alinea/core'
export type {Config} from 'alinea/core/Config'
export type {Infer} from 'alinea/core/Infer'
export {Root} from 'alinea/core/Root'
export type {Schema} from 'alinea/core/Schema'
export type {TextDoc} from 'alinea/core/TextDoc'
export type {Type} from 'alinea/core/Type'
export {Workspace} from 'alinea/core/Workspace'
export type {
EntryReference,
FileReference,
Expand All @@ -23,8 +26,8 @@ export type {
export type {UrlReference} from 'alinea/picker/url'

// Helpers
export type {Infer as infer} from 'alinea/core'
export {document} from 'alinea/core/Document'
export type {Infer as infer} from 'alinea/core/Infer'
export {createMediaRoot as media} from 'alinea/core/media/MediaRoot'

// Included inputs
Expand Down
2 changes: 1 addition & 1 deletion src/auth/passwordless.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import {
PasswordLessAuth,
PasswordLessAuthOptions
} from 'alinea/auth/passwordless/PasswordLessAuth'
import {Auth} from 'alinea/core'
import type {Auth} from 'alinea/core/Auth'
import {PasswordLessLogin} from './passwordless/PasswordLessLogin.js'

export type PasswordLess = PasswordLessAuthOptions
Expand Down
7 changes: 6 additions & 1 deletion src/auth/passwordless/PasswordLessAuth.server.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
import {Route, router} from 'alinea/backend/router/Router'
import {Auth, Connection, HttpError, Outcome, User} from 'alinea/core'
import {Auth} from 'alinea/core/Auth'
import {Connection} from 'alinea/core/Connection'
import {HttpError} from 'alinea/core/HttpError'
import {Outcome} from 'alinea/core/Outcome'
import {User} from 'alinea/core/User'

import {sign, verify} from 'alinea/core/util/JWT'
import type {Transporter} from 'nodemailer'
import {assert, object, string} from 'superstruct'
Expand Down
4 changes: 3 additions & 1 deletion src/auth/passwordless/PasswordLessLogin.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
import {Auth, Connection, Session} from 'alinea/core'
import {Auth} from 'alinea/core/Auth'
import {Client} from 'alinea/core/Client'
import {Connection} from 'alinea/core/Connection'
import {Session} from 'alinea/core/Session'
import {decode} from 'alinea/core/util/JWT'
import {joinPaths} from 'alinea/core/util/Urls'
import {useDashboard} from 'alinea/dashboard/hook/UseDashboard'
Expand Down
4 changes: 3 additions & 1 deletion src/backend/Database.test.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
import {Edit, EntryPhase, Query} from 'alinea/core'
import {Edit} from 'alinea/core/Edit'
import {EntryPhase} from 'alinea/core/EntryRow'
import {Query} from 'alinea/core/Query'
import {createPreview} from 'alinea/core/media/CreatePreview'
import {readFileSync} from 'fs'
import {test} from 'uvu'
Expand Down
26 changes: 11 additions & 15 deletions src/backend/Database.ts
Original file line number Diff line number Diff line change
@@ -1,25 +1,21 @@
import {
Config,
EntryUrlMeta,
PageSeed,
Root,
Schema,
SyncResponse,
Syncable,
Type,
Workspace,
createId,
slugify,
unreachable
} from 'alinea/core'
import {entryInfo, entryUrl} from 'alinea/core/EntryFilenames'
import {Config} from 'alinea/core/Config'
import {SyncResponse, Syncable} from 'alinea/core/Connection'
import {EntryRecord, META_KEY, createRecord} from 'alinea/core/EntryRecord'
import {createId} from 'alinea/core/Id'
import {Mutation, MutationType} from 'alinea/core/Mutation'
import {PageSeed} from 'alinea/core/Page'
import {Root} from 'alinea/core/Root'
import {Schema} from 'alinea/core/Schema'
import {EntryUrlMeta, Type} from 'alinea/core/Type'
import {Workspace} from 'alinea/core/Workspace'
import {createFileHash, createRowHash} from 'alinea/core/util/ContentHash'
import {entryInfo, entryUrl} from 'alinea/core/util/EntryFilenames'
import {createEntryRow, publishEntryRow} from 'alinea/core/util/EntryRows'
import {Logger} from 'alinea/core/util/Logger'
import {entries} from 'alinea/core/util/Objects'
import * as paths from 'alinea/core/util/Paths'
import {slugify} from 'alinea/core/util/Slugs'
import {unreachable} from 'alinea/core/util/Types'
import {Driver, Expr, Select, alias, create} from 'rado'
import {exists} from 'rado/sqlite'
import xxhash from 'xxhash-wasm'
Expand Down
3 changes: 2 additions & 1 deletion src/backend/Drafts.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import {Connection, Draft} from 'alinea/core'
import {Connection} from 'alinea/core/Connection'
import {Draft} from 'alinea/core/Draft'

export interface DraftTransport {
entryId: string
Expand Down
27 changes: 13 additions & 14 deletions src/backend/Handler.ts
Original file line number Diff line number Diff line change
@@ -1,24 +1,23 @@
import {Request, Response} from '@alinea/iso'

import {Auth} from 'alinea/core/Auth'
import {Config} from 'alinea/core/Config'
import {Connection, SyncResponse} from 'alinea/core/Connection'
import {parseYDoc} from 'alinea/core/Doc'
import {Draft} from 'alinea/core/Draft'
import {Entry} from 'alinea/core/Entry'
import {EntryRecord} from 'alinea/core/EntryRecord'
import {EntryPhase, EntryRow} from 'alinea/core/EntryRow'
import {EditMutation, Mutation, MutationType} from 'alinea/core/Mutation'
import {
Auth,
Config,
Connection,
Draft,
Entry,
EntryPhase,
EntryRow,
PreviewUpdate,
ResolveDefaults,
ResolveParams,
Resolver,
SyncResponse,
parseYDoc
} from 'alinea/core'
import {EntryRecord} from 'alinea/core/EntryRecord'
import {EditMutation, Mutation, MutationType} from 'alinea/core/Mutation'
Resolver
} from 'alinea/core/Resolver'
import {createSelection} from 'alinea/core/pages/CreateSelection'
import {Realm} from 'alinea/core/pages/Realm'
import {Selection} from 'alinea/core/pages/Selection'
import {Selection} from 'alinea/core/pages/ResolveData'
import {base64, base64url} from 'alinea/core/util/Encoding'
import {Logger, LoggerResult, Report} from 'alinea/core/util/Logger'
import * as Y from 'alinea/yjs'
Expand Down
3 changes: 2 additions & 1 deletion src/backend/History.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import {Connection, User} from 'alinea/core'
import {Connection} from 'alinea/core/Connection'
import {EntryRecord} from 'alinea/core/EntryRecord'
import {User} from 'alinea/core/User'

export interface Revision {
ref: string
Expand Down
2 changes: 1 addition & 1 deletion src/backend/Loader.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import {Schema} from 'alinea/core'
import {EntryRecord} from 'alinea/core/EntryRecord'
import {Schema} from 'alinea/core/Schema'

export interface Loader {
extension: string
Expand Down
3 changes: 2 additions & 1 deletion src/backend/Media.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import {Connection, EntryRow} from 'alinea/core'
import type {Connection} from 'alinea/core/Connection'
import type {EntryRow} from 'alinea/core/EntryRow'

export interface Media {
prepareUpload(
Expand Down
4 changes: 2 additions & 2 deletions src/backend/Pending.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import {Connection} from 'alinea/core'
import {Mutation} from 'alinea/core/Mutation'
import type {Connection} from 'alinea/core/Connection'
import type {Mutation} from 'alinea/core/Mutation'

export interface Pending {
pendingSince(
Expand Down
2 changes: 1 addition & 1 deletion src/backend/Previews.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import {User} from 'alinea/core'
import type {User} from 'alinea/core/User'

export interface Previews {
sign(data: User): Promise<string>
Expand Down
2 changes: 1 addition & 1 deletion src/backend/Target.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import {Connection} from 'alinea/core'
import type {Connection} from 'alinea/core/Connection'

export interface Target {
mutate(
Expand Down
5 changes: 4 additions & 1 deletion src/backend/data/ChangeSet.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import {Config, EntryPhase, EntryUrlMeta, Type, Workspace} from 'alinea/core'
import {Config} from 'alinea/core/Config'
import {META_KEY, createRecord} from 'alinea/core/EntryRecord'
import {EntryPhase} from 'alinea/core/EntryRow'
import {
ArchiveMutation,
CreateMutation,
Expand All @@ -15,6 +16,8 @@ import {
RemoveEntryMutation,
UploadMutation
} from 'alinea/core/Mutation'
import {EntryUrlMeta, Type} from 'alinea/core/Type'
import {Workspace} from 'alinea/core/Workspace'
import {join} from 'alinea/core/util/Paths'
import {JsonLoader} from '../loader/JsonLoader.js'

Expand Down
5 changes: 4 additions & 1 deletion src/backend/data/MemoryHandler.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
import {Config, Connection, Draft, createId} from 'alinea/core'
import {Config} from 'alinea/core/Config'
import {Connection} from 'alinea/core/Connection'
import {Draft} from 'alinea/core/Draft'
import {EntryRecord} from 'alinea/core/EntryRecord'
import {createId} from 'alinea/core/Id'
import {Mutation} from 'alinea/core/Mutation'
import {Database} from '../Database.js'
import {Drafts} from '../Drafts.js'
Expand Down
4 changes: 2 additions & 2 deletions src/backend/loader/JsonLoader.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import {Schema} from 'alinea/core'
import {EntryRecord, META_KEY} from 'alinea/core/EntryRecord'
import {Loader} from '../Loader.js'
import type {Schema} from 'alinea/core/Schema'
import type {Loader} from '../Loader.js'

const encoder = new TextEncoder()
const decoder = new TextDecoder()
Expand Down
19 changes: 9 additions & 10 deletions src/backend/resolver/EntryResolver.ts
Original file line number Diff line number Diff line change
@@ -1,19 +1,18 @@
import {EntryPhase, EntryRow, EntryTable} from 'alinea/core/EntryRow'
import {EntrySearch} from 'alinea/core/EntrySearch'
import {Field} from 'alinea/core/Field'
import {
Field,
PreviewUpdate,
ResolveDefaults,
ResolveParams,
Schema,
Type,
unreachable
} from 'alinea/core'
import {EntryPhase, EntryRow, EntryTable} from 'alinea/core/EntryRow'
import {EntrySearch} from 'alinea/core/EntrySearch'
ResolveParams
} from 'alinea/core/Resolver'
import {Schema} from 'alinea/core/Schema'
import {Type} from 'alinea/core/Type'
import type * as pages from 'alinea/core/pages'
import {SourceType} from 'alinea/core/pages/Cursor'
import {BinaryOp, UnaryOp} from 'alinea/core/pages/ExprData'
import {Realm} from 'alinea/core/pages/Realm'
import {BinaryOp, SourceType, UnaryOp} from 'alinea/core/pages/ResolveData'
import {entries, fromEntries, keys} from 'alinea/core/util/Objects'
import {unreachable} from 'alinea/core/util/Types'
import {
BinOpType,
Expr,
Expand Down
4 changes: 2 additions & 2 deletions src/backend/resolver/LinkResolver.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import {Entry} from 'alinea/core'
import {Entry} from 'alinea/core/Entry'
import {createSelection} from 'alinea/core/pages/CreateSelection'
import {Projection} from 'alinea/core/pages/Projection'
import type {Projection} from 'alinea/core/pages/Projection'
import {Realm} from 'alinea/core/pages/Realm'
import {serializeSelection} from 'alinea/core/pages/Serialize'
import DataLoader from 'dataloader'
Expand Down
10 changes: 8 additions & 2 deletions src/backend/test/Example.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,13 @@
import {Entry, document, page, root, schema, type, workspace} from 'alinea/core'
import {document} from 'alinea/core/Document'
import {Entry} from 'alinea/core/Entry'
import {page} from 'alinea/core/Page'
import {root} from 'alinea/core/Root'
import {schema} from 'alinea/core/Schema'
import {type} from 'alinea/core/Type'
import {workspace} from 'alinea/core/Workspace'
import {createTestCMS} from 'alinea/core/driver/TestDriver'
import {createMediaRoot} from 'alinea/core/media/MediaRoot'
import {MediaFile, MediaLibrary} from 'alinea/core/media/MediaSchema'
import {MediaFile, MediaLibrary} from 'alinea/core/media/MediaTypes'
import {
check,
code,
Expand Down
2 changes: 1 addition & 1 deletion src/backend/test/ExampleTypes.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import {type} from 'alinea/core'
import {type} from 'alinea/core/Type'
import {path, tab, tabs, text} from 'alinea/field'

export const TypeWithTabs = type('Type', {
Expand Down
2 changes: 1 addition & 1 deletion src/backend/util/JWTPreviews.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import {User} from 'alinea/core'
import {User} from 'alinea/core/User'
import {sign, verify} from 'alinea/core/util/JWT'
import {Previews} from '../Previews.js'

Expand Down
3 changes: 2 additions & 1 deletion src/cli/Init.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import {createId, outcome} from 'alinea/core'
import {createId} from 'alinea/core/Id'
import {outcome} from 'alinea/core/Outcome'
import fs from 'node:fs/promises'
import path from 'node:path'
import {dirname} from './util/Dirname.js'
Expand Down
Loading

0 comments on commit 7bebfeb

Please sign in to comment.