chore: release next-config v1.6.1
All checks were successful
Monorepo Pipeline / 🧪 Quality Assurance (push) Successful in 2m12s
Monorepo Pipeline / 🐳 Build Directus (Base) (push) Successful in 18s
Monorepo Pipeline / 🚀 Release (push) Successful in 2m17s
Monorepo Pipeline / 🐳 Build Gatekeeper (Product) (push) Successful in 2m13s
Monorepo Pipeline / 🐳 Build Production Runtime (push) Successful in 17s
Monorepo Pipeline / 🐳 Build Build-Base (push) Successful in 5m27s
All checks were successful
Monorepo Pipeline / 🧪 Quality Assurance (push) Successful in 2m12s
Monorepo Pipeline / 🐳 Build Directus (Base) (push) Successful in 18s
Monorepo Pipeline / 🚀 Release (push) Successful in 2m17s
Monorepo Pipeline / 🐳 Build Gatekeeper (Product) (push) Successful in 2m13s
Monorepo Pipeline / 🐳 Build Production Runtime (push) Successful in 17s
Monorepo Pipeline / 🐳 Build Build-Base (push) Successful in 5m27s
This commit is contained in:
@@ -6,6 +6,12 @@
|
|||||||
|
|
||||||
- Add `turbopack: {}` to support Next.js 16 default Turbopack behavior when a webpack config is present.
|
- Add `turbopack: {}` to support Next.js 16 default Turbopack behavior when a webpack config is present.
|
||||||
|
|
||||||
|
## 1.6.1
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Add `turbopack: {}` to support Next.js 16 default Turbopack behavior when a webpack config is present.
|
||||||
|
|
||||||
## 1.0.1
|
## 1.0.1
|
||||||
|
|
||||||
### Patch Changes
|
### Patch Changes
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@mintel/next-config",
|
"name": "@mintel/next-config",
|
||||||
"version": "1.6.0",
|
"version": "1.6.1",
|
||||||
"publishConfig": {
|
"publishConfig": {
|
||||||
"access": "public",
|
"access": "public",
|
||||||
"registry": "https://npm.infra.mintel.me"
|
"registry": "https://npm.infra.mintel.me"
|
||||||
|
|||||||
@@ -44,6 +44,11 @@ case $ENV in
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
echo "📦 Syncing extensions to REMOTE $ENV..."
|
||||||
|
# Ensure remote directory exists
|
||||||
|
ssh "$REMOTE_HOST" "mkdir -p $REMOTE_DIR/extensions"
|
||||||
|
rsync -avz --delete ./packages/cms-infra/extensions/ "$REMOTE_HOST:$REMOTE_DIR/extensions/"
|
||||||
|
|
||||||
echo "📤 Injecting snapshot directly into container $REMOTE_CONTAINER..."
|
echo "📤 Injecting snapshot directly into container $REMOTE_CONTAINER..."
|
||||||
# Inject file via stdin to avoid needing a host-side mount or scp path matching
|
# Inject file via stdin to avoid needing a host-side mount or scp path matching
|
||||||
ssh "$REMOTE_HOST" "docker exec -i $REMOTE_CONTAINER sh -c 'cat > /tmp/snapshot.yaml'" < "$LOCAL_SCHEMA_PATH"
|
ssh "$REMOTE_HOST" "docker exec -i $REMOTE_CONTAINER sh -c 'cat > /tmp/snapshot.yaml'" < "$LOCAL_SCHEMA_PATH"
|
||||||
|
|||||||
@@ -17,4 +17,7 @@ echo "📸 Creating schema snapshot for local $PROJECT..."
|
|||||||
# Note: we save it to the mounted volume path inside the container
|
# Note: we save it to the mounted volume path inside the container
|
||||||
docker exec "$LOCAL_CONTAINER" npx directus schema snapshot -y /directus/schema/snapshot.yaml
|
docker exec "$LOCAL_CONTAINER" npx directus schema snapshot -y /directus/schema/snapshot.yaml
|
||||||
|
|
||||||
echo "✅ Snapshot saved to $SCHEMA_PATH"
|
echo "🛠️ Repairing snapshot for Postgres compatibility..."
|
||||||
|
python3 ./scripts/fix_snapshot_v3.py
|
||||||
|
|
||||||
|
echo "✅ Snapshot saved and repaired at $SCHEMA_PATH"
|
||||||
|
|||||||
96
scripts/fix_snapshot_v3.py
Normal file
96
scripts/fix_snapshot_v3.py
Normal file
@@ -0,0 +1,96 @@
|
|||||||
|
import sys
|
||||||
|
import os
|
||||||
|
|
||||||
|
path = '/Users/marcmintel/Projects/at-mintel/packages/cms-infra/schema/snapshot.yaml'
|
||||||
|
if not os.path.exists(path):
|
||||||
|
print(f"File not found: {path}")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
with open(path, 'r') as f:
|
||||||
|
lines = f.readlines()
|
||||||
|
|
||||||
|
new_lines = []
|
||||||
|
current_collection = None
|
||||||
|
current_field = None
|
||||||
|
in_schema = False
|
||||||
|
|
||||||
|
fix_fields = {'id', 'company', 'user_created', 'user_updated', 'screenshot', 'logo', 'feedback_id'}
|
||||||
|
uuid_fields = {'id', 'company', 'user_created', 'user_updated'}
|
||||||
|
|
||||||
|
# For multi-pass logic
|
||||||
|
snapshot_has_feedback_id = False
|
||||||
|
|
||||||
|
for line in lines:
|
||||||
|
stripped = line.strip()
|
||||||
|
|
||||||
|
if stripped.startswith('- collection:'):
|
||||||
|
current_collection = stripped.split(':')[-1].strip()
|
||||||
|
in_schema = False
|
||||||
|
elif stripped.startswith('field:'):
|
||||||
|
current_field = stripped.split(':')[-1].strip()
|
||||||
|
if current_collection == 'visual_feedback_comments' and current_field == 'feedback_id':
|
||||||
|
snapshot_has_feedback_id = True
|
||||||
|
elif stripped == 'schema:':
|
||||||
|
in_schema = True
|
||||||
|
elif stripped == 'meta:' or stripped.startswith('- collection:') or (not line.startswith(' ') and line.strip() and not line.startswith('-')):
|
||||||
|
in_schema = False
|
||||||
|
|
||||||
|
# Top-level field type
|
||||||
|
if not in_schema and stripped.startswith('type:') and current_field in uuid_fields:
|
||||||
|
line = line.replace('type: string', 'type: uuid')
|
||||||
|
|
||||||
|
# Schema data type
|
||||||
|
if in_schema and current_field in fix_fields:
|
||||||
|
if 'data_type: char' in line or 'data_type: varchar' in line:
|
||||||
|
line = line.replace('data_type: char', 'data_type: uuid').replace('data_type: varchar', 'data_type: uuid')
|
||||||
|
if 'max_length:' in line:
|
||||||
|
line = ' max_length: null\n'
|
||||||
|
|
||||||
|
new_lines.append(line)
|
||||||
|
|
||||||
|
# Handle Missing feedback_id Injection
|
||||||
|
if not snapshot_has_feedback_id:
|
||||||
|
# We find systemFields and inject before it
|
||||||
|
injected = False
|
||||||
|
final_lines = []
|
||||||
|
feedback_id_block = """ - collection: visual_feedback_comments
|
||||||
|
field: feedback_id
|
||||||
|
type: integer
|
||||||
|
meta:
|
||||||
|
collection: visual_feedback_comments
|
||||||
|
field: feedback_id
|
||||||
|
interface: select-dropdown-m2o
|
||||||
|
required: true
|
||||||
|
sort: 4
|
||||||
|
width: full
|
||||||
|
schema:
|
||||||
|
name: feedback_id
|
||||||
|
table: visual_feedback_comments
|
||||||
|
data_type: integer
|
||||||
|
is_nullable: false
|
||||||
|
is_indexed: true
|
||||||
|
foreign_key_table: visual_feedback
|
||||||
|
foreign_key_column: id
|
||||||
|
"""
|
||||||
|
for line in new_lines:
|
||||||
|
if 'systemFields:' in line and not injected:
|
||||||
|
final_lines.append(feedback_id_block)
|
||||||
|
injected = True
|
||||||
|
final_lines.append(line)
|
||||||
|
new_lines = final_lines
|
||||||
|
|
||||||
|
# Second pass for primary key nullability
|
||||||
|
final_lines = []
|
||||||
|
for i in range(len(new_lines)):
|
||||||
|
line = new_lines[i]
|
||||||
|
if 'is_primary_key: true' in line:
|
||||||
|
# Search backwards and forwards
|
||||||
|
for j in range(max(0, i-10), min(len(new_lines), i+10)):
|
||||||
|
if 'is_nullable: true' in new_lines[j]:
|
||||||
|
new_lines[j] = new_lines[j].replace('is_nullable: true', 'is_nullable: false')
|
||||||
|
final_lines.append(line)
|
||||||
|
|
||||||
|
with open(path, 'w') as f:
|
||||||
|
f.writelines(new_lines)
|
||||||
|
|
||||||
|
print("SUCCESS: Full normalization and field injection complete.")
|
||||||
Reference in New Issue
Block a user